Class EventQueue
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:
- Sequentially.
- That is, it is not permitted that several events from this queue are dispatched simultaneously.
- In the same order as they are enqueued.
- That is, if
AWTEvent
A is enqueued to theEventQueue
beforeAWTEvent
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.
- Since:
- 1.1
Constructor Summary
Constructor | Description |
---|---|
EventQueue() |
Initializes a new instance of EventQueue . |
Method Summary
Modifier and Type | Method | Description |
---|---|---|
SecondaryLoop |
createSecondaryLoop() |
Creates a new secondary loop associated with this event queue. |
protected void |
dispatchEvent |
Dispatches an event. |
static AWTEvent |
getCurrentEvent() |
Returns 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 |
|
static void |
invokeLater |
|
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 |
Returns the first event with the specified id, if any. |
protected void |
pop() |
Stops dispatching events using this EventQueue . |
void |
postEvent |
Posts a 1.1-style event to the EventQueue . |
void |
push |
Replaces the existing EventQueue with the specified one. |
Constructor Details
EventQueue
public EventQueue()
EventQueue
.Method Details
postEvent
public void postEvent(AWTEvent theEvent)
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.- Parameters:
-
theEvent
- an instance ofjava.awt.AWTEvent
, or a subclass of it - Throws:
-
NullPointerException
- iftheEvent
isnull
getNextEvent
public AWTEvent getNextEvent() throws InterruptedException
EventQueue
and returns it. This method will block until an event has been posted by another thread.- Returns:
- the next
AWTEvent
- Throws:
-
InterruptedException
- if any thread has interrupted this thread
peekEvent
public AWTEvent peekEvent()
EventQueue
without removing it.- Returns:
- the first event
peekEvent
public AWTEvent peekEvent(int id)
- Parameters:
-
id
- the id of the type of event desired - Returns:
- the first event of the specified id or
null
if there is no such event
dispatchEvent
protected void dispatchEvent(AWTEvent event)
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) |
- Parameters:
-
event
- an instance ofjava.awt.AWTEvent
, or a subclass of it - Throws:
-
NullPointerException
- ifevent
isnull
- Since:
- 1.2
getMostRecentEventTime
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 InputEvent
s, ActionEvent
s, and InvocationEvent
s 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.- Returns:
- the timestamp of the last
InputEvent
,ActionEvent
, orInvocationEvent
to be dispatched, orSystem.currentTimeMillis()
if this method is invoked on a thread other than an event dispatching thread - Since:
- 1.4
- See Also:
getCurrentEvent
public static AWTEvent getCurrentEvent()
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.- Returns:
- the event currently being dispatched, or null if this method is invoked on a thread other than an event dispatching thread
- Since:
- 1.4
push
public void push(EventQueue newEventQueue)
EventQueue
with the specified one. Any pending events are transferred to the new EventQueue
for processing by it.- Parameters:
-
newEventQueue
- anEventQueue
(or subclass thereof) instance to be use - Throws:
-
NullPointerException
- ifnewEventQueue
isnull
- Since:
- 1.2
- See Also:
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.
- Throws:
-
EmptyStackException
- if no previous push was made on thisEventQueue
- Since:
- 1.2
- See Also:
createSecondaryLoop
public SecondaryLoop createSecondaryLoop()
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.- Returns:
- secondaryLoop A new secondary loop object, which can be used to launch a new nested event loop and dispatch events from this queue
- Since:
- 1.7
- See Also:
isDispatchThread
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.
- Returns:
- true if running in
the current AWT EventQueue
's dispatch thread - Since:
- 1.2
- See Also:
invokeLater
public static void invokeLater(Runnable runnable)
runnable
to have its run
method called in the dispatch thread
of the system EventQueue
. This will happen after all pending events are processed.- Parameters:
-
runnable
- theRunnable
whoserun
method should be executed asynchronously in theevent dispatch thread
ofthe system EventQueue
- Since:
- 1.2
- See Also:
invokeAndWait
public static void invokeAndWait(Runnable runnable) 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
.- Parameters:
-
runnable
- theRunnable
whoserun
method should be executed synchronously in theevent dispatch thread
ofthe system EventQueue
- Throws:
-
InterruptedException
- if any thread has interrupted this thread -
InvocationTargetException
- if an throwable is thrown when runningrunnable
- Since:
- 1.2
- See Also:
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/java/awt/EventQueue.html