public class EventQueue extends Object
EventQueue is a platform-independent class that queues events, both from the underlying peer classes and from trusted application classes.
It encapsulates asynchronous event dispatch machinery which extracts events from the queue and dispatches them by calling dispatchEvent(AWTEvent) method on this EventQueue with the event to be dispatched as an argument. The particular behavior of this machinery is implementation-dependent. The only requirements are that events which were actually enqueued to this queue (note that events being posted to the EventQueue can be coalesced) are dispatched:
AWTEvent A is enqueued to the
EventQueue before
AWTEvent B then event B will not be dispatched before event A.
Some browsers partition applets in different code bases into separate contexts, and establish walls between these contexts. In such a scenario, there will be one EventQueue per context. Other browsers place all applets into the same context, implying that there will be only a single, global EventQueue for all applets. This behavior is implementation-dependent. Consult your browser's documentation for more information.
For information on the threading issues of the event dispatch machinery, see AWT Threading Issues.
| Constructor and Description |
|---|
EventQueue()
|
| Modifier and Type | Method and Description |
|---|---|
SecondaryLoop |
createSecondaryLoop()
Creates a new
secondary loop associated with this event queue.
|
protected void |
dispatchEvent(AWTEvent
Dispatches an event.
|
static AWTEvent |
getCurrentEvent()
Returns the the event currently being dispatched by the
EventQueue associated with the calling thread.
|
static long |
getMostRecentEventTime()
Returns the timestamp of the most recent event that had a timestamp, and that was dispatched from the
EventQueue associated with the calling thread.
|
AWTEvent |
getNextEvent()
Removes an event from the
EventQueue and returns it.
|
static void |
invokeAndWait(Runnable
|
static void |
invokeLater(Runnable
|
static boolean |
isDispatchThread()
Returns true if the calling thread is
the current AWT EventQueue's dispatch thread.
|
AWTEvent |
peekEvent()
Returns the first event on the
EventQueue without removing it.
|
AWTEvent |
peekEvent(int id)
Returns the first event with the specified id, if any.
|
protected void |
pop()
Stops dispatching events using this
EventQueue.
|
void |
postEvent(AWTEvent
Posts a 1.1-style event to the
EventQueue.
|
void |
push(EventQueue
Replaces the existing
EventQueue with the specified one.
|
public void postEvent(AWTEventtheEvent)
EventQueue. If there is an existing event on the queue with the same ID and event source, the source
Component's
coalesceEvents method will be called.
theEvent - an instance of
java.awt.AWTEvent, or a subclass of it
NullPointerException - if
theEvent is
null
public AWTEventgetNextEvent() throws InterruptedException
EventQueue and returns it. This method will block until an event has been posted by another thread.
AWTEvent
InterruptedException - if any thread has interrupted this thread
public AWTEventpeekEvent()
EventQueue without removing it.
public AWTEventpeekEvent(int id)
id - the id of the type of event desired
null if there is no such event
protected void dispatchEvent(AWTEventevent)
| Event Type | Source Type | Dispatched To |
|---|---|---|
| ActiveEvent | Any | event.dispatch() |
| Other | Component | source.dispatchEvent(AWTEvent) |
| Other | MenuComponent | source.dispatchEvent(AWTEvent) |
| Other | Other | No action (ignored) |
event - an instance of
java.awt.AWTEvent, or a subclass of it
NullPointerException - if
event is
null
public static long getMostRecentEventTime()
EventQueue associated with the calling thread. If an event with a timestamp is currently being dispatched, its timestamp will be returned. If no events have yet been dispatched, the EventQueue's initialization time will be returned instead.In the current version of the JDK, only
InputEvents,
ActionEvents, and
InvocationEvents have timestamps; however, future versions of the JDK may add timestamps to additional event types. Note that this method should only be invoked from an application's
event dispatching thread. If this method is invoked from another thread, the current system time (as reported by
System.currentTimeMillis()) will be returned instead.
InputEvent,
ActionEvent, or
InvocationEvent to be dispatched, or
System.currentTimeMillis() if this method is invoked on a thread other than an event dispatching thread
InputEvent.getWhen() ,
ActionEvent.getWhen() ,
InvocationEvent.getWhen() ,
isDispatchThread()
public static AWTEventgetCurrentEvent()
EventQueue associated with the calling thread. This is useful if a method needs access to the event, but was not designed to receive a reference to it as an argument. Note that this method should only be invoked from an application's event dispatching thread. If this method is invoked from another thread, null will be returned.
public void push(EventQueuenewEventQueue)
EventQueue with the specified one. Any pending events are transferred to the new
EventQueue for processing by it.
newEventQueue - an
EventQueue (or subclass thereof) instance to be use
NullPointerException - if
newEventQueue is
null
pop()
protected void pop()
throws EmptyStackException
EventQueue. Any pending events are transferred to the previous
EventQueue for processing.
Warning: To avoid deadlock, do not declare this method synchronized in a subclass.
EmptyStackException - if no previous push was made on this
EventQueue
push(java.awt.EventQueue)
public SecondaryLoopcreateSecondaryLoop()
secondary loop associated with this event queue. Use the
SecondaryLoop.enter() and
SecondaryLoop.exit() methods to start and stop the event loop and dispatch the events from this queue.
SecondaryLoop.enter() ,
SecondaryLoop.exit()
public static boolean isDispatchThread()
the current AWT EventQueue's dispatch thread. Use this method to ensure that a particular task is being executed (or not being) there.
Note: use the invokeLater(java.lang.Runnable) or invokeAndWait(java.lang.Runnable) methods to execute a task in the current AWT EventQueue's dispatch thread.
the current AWT EventQueue's dispatch thread
invokeLater(java.lang.Runnable),
invokeAndWait(java.lang.Runnable),
Toolkit.getSystemEventQueue()
public static void invokeLater(Runnablerunnable)
runnable to have its
run method called in the
dispatch thread of
the system EventQueue. This will happen after all pending events are processed.
runnable - the
Runnable whose
run method should be executed asynchronously in the
event dispatch thread of
the system EventQueue
invokeAndWait(java.lang.Runnable),
Toolkit.getSystemEventQueue() ,
isDispatchThread()
public static void invokeAndWait(Runnablerunnable) throws InterruptedException , InvocationTargetException
runnable to have its
run method called in the
dispatch thread of
the system EventQueue. This will happen after all pending events are processed. The call blocks until this has happened. This method will throw an Error if called from the
event dispatcher thread.
runnable - the
Runnable whose
run method should be executed synchronously in the
event dispatch thread of
the system EventQueue
InterruptedException - if any thread has interrupted this thread
InvocationTargetException - if an throwable is thrown when running
runnable
invokeLater(java.lang.Runnable),
Toolkit.getSystemEventQueue() ,
isDispatchThread()