Класс EventQueue
public class EventQueue extends Object
EventQueue — это независимый от платформы класс, который помещает в очередь события как из базовых классов peer, так и из доверенных классов приложения. Он инкапсулирует механизм асинхронной диспетчеризации событий, который извлекает события из очереди и диспетчеризирует их, вызывая метод dispatchEvent(AWTEvent) этого EventQueue, передавая диспетчеризируемое событие в качестве аргумента. Конкретное поведение этого механизма зависит от реализации. Единственные требования заключаются в том, что события, фактически помещённые в эту очередь (обратите внимание, что события, отправляемые в EventQueue, могут объединяться), диспетчеризируются:
- Последовательно.
- То есть одновременная диспетчеризация нескольких событий из этой очереди не допускается.
- В том же порядке, в котором они помещены в очередь.
- То есть, если
AWTEventA помещено вEventQueueраньше, чемAWTEventB, событие B не будет диспетчеризировано раньше события A.
Некоторые браузеры разделяют апплеты из разных кодовых баз по отдельным контекстам и устанавливают границы между этими контекстами. В таком случае для каждого контекста будет существовать свой EventQueue. Другие браузеры помещают все апплеты в один контекст, а значит, для всех апплетов будет существовать только одна глобальная EventQueue. Это поведение зависит от реализации. Дополнительные сведения см. в документации браузера.
Сведения о проблемах многопоточности в механизме диспетчеризации событий см. в разделе Проблемы многопоточности в AWT.
- С версии:
- 1.1
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
EventQueue() |
Инициализирует новый экземпляр EventQueue. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
SecondaryLoop |
createSecondaryLoop() |
Создаёт новый secondary loop, связанный с этой очередью событий. |
protected void |
dispatchEvent |
Диспетчеризирует событие. |
static AWTEvent |
getCurrentEvent() |
Возвращает событие, которое в данный момент диспетчеризируется EventQueue, связанным с вызывающим потоком. |
static long |
getMostRecentEventTime() |
Возвращает временную метку последнего события, имевшего временную метку и диспетчеризированного из EventQueue, связанного с вызывающим потоком. |
AWTEvent |
getNextEvent() |
Удаляет событие из EventQueue и возвращает его. |
static void |
invokeAndWait |
|
static void |
invokeLater |
|
static boolean |
isDispatchThread() |
Возвращает true, если вызывающий поток является потоком диспетчеризации the current AWT EventQueue. |
AWTEvent |
peekEvent() |
Возвращает первое событие в EventQueue, не удаляя его. |
AWTEvent |
peekEvent |
Возвращает первое событие с указанным идентификатором, если оно есть. |
protected void |
pop() |
Прекращает диспетчеризацию событий с использованием этого EventQueue. |
void |
postEvent |
Помещает в EventQueue событие в стиле версии 1.1. |
void |
push |
Заменяет существующий EventQueue указанным. |
Подробное описание конструкторов
EventQueue
public EventQueue()
EventQueue.Подробное описание методов
postEvent
public void postEvent(AWTEvent theEvent)
EventQueue событие в стиле версии 1.1. Если в очереди уже есть событие с тем же идентификатором и источником события, будет вызван метод coalesceEvents объекта-источника Component.- Параметры:
-
theEvent— экземплярjava.awt.AWTEventили его подкласса - Исключения:
-
NullPointerException— еслиtheEventравноnull
getNextEvent
public AWTEvent getNextEvent() throws InterruptedException
EventQueue и возвращает его. Этот метод блокируется, пока другой поток не поместит событие в очередь.- Возвращает:
- следующее
AWTEvent - Исключения:
-
InterruptedException— если какой-либо поток прервал этот поток
peekEvent
public AWTEvent peekEvent()
EventQueue, не удаляя его.- Возвращает:
- первое событие
peekEvent
public AWTEvent peekEvent(int id)
- Параметры:
-
id— идентификатор типа требуемого события - Возвращает:
- первое событие с указанным идентификатором или
null, если такого события нет
dispatchEvent
protected void dispatchEvent(AWTEvent event)
| Тип события | Тип источника | Кому передаётся |
|---|---|---|
| ActiveEvent | Любой | event.dispatch() |
| Другое | Component | source.dispatchEvent(AWTEvent) |
| Другое | MenuComponent | source.dispatchEvent(AWTEvent) |
| Другое | Другое | Действий нет (игнорируется) |
- Параметры:
-
event— экземплярjava.awt.AWTEventили его подкласса - Исключения:
-
NullPointerException— еслиeventравноnull - С версии:
- 1.2
getMostRecentEventTime
public static long getMostRecentEventTime()
EventQueue, связанного с вызывающим потоком. Если в данный момент диспетчеризируется событие с временной меткой, будет возвращена его временная метка. Если события ещё не диспетчеризировались, вместо неё будет возвращено время инициализации EventQueue. В текущей версии JDK временные метки есть только у InputEvent, ActionEvent и InvocationEvent; однако в будущих версиях JDK временные метки могут появиться и у других типов событий. Обратите внимание, что этот метод следует вызывать только из event dispatching thread приложения. Если вызвать этот метод из другого потока, вместо этого будет возвращено текущее системное время (согласно System.currentTimeMillis()).- Возвращает:
- временную метку последнего диспетчеризированного
InputEvent,ActionEventилиInvocationEventлибоSystem.currentTimeMillis(), если метод вызван не из потока диспетчеризации событий - С версии:
- 1.4
- См. также:
getCurrentEvent
public static AWTEvent getCurrentEvent()
EventQueue, связанным с вызывающим потоком. Это полезно, если методу необходим доступ к событию, но он не был разработан для получения ссылки на него в качестве аргумента. Обратите внимание, что этот метод следует вызывать только из потока диспетчеризации событий приложения. Если вызвать этот метод из другого потока, будет возвращено null.- Возвращает:
- событие, которое в данный момент диспетчеризируется, или null, если метод вызван не из потока диспетчеризации событий
- С версии:
- 1.4
push
public void push(EventQueue newEventQueue)
EventQueue указанным. Все ожидающие обработки события передаются новой EventQueue для обработки.- Параметры:
-
newEventQueue— экземплярEventQueue(или его подкласса), который следует использовать - Исключения:
-
NullPointerException— еслиnewEventQueueравноnull - С версии:
- 1.2
- См. также:
pop
protected void pop() throws EmptyStackException
EventQueue. Все ожидающие обработки события передаются предыдущему EventQueue для обработки. Предупреждение: во избежание взаимной блокировки не объявляйте этот метод синхронизированным в подклассе.
- Исключения:
-
EmptyStackException— если для этогоEventQueueранее не вызывался push - С версии:
- 1.2
- См. также:
createSecondaryLoop
public SecondaryLoop createSecondaryLoop()
secondary loop, связанный с этой очередью событий. Используйте методы SecondaryLoop.enter() и SecondaryLoop.exit(), чтобы запускать и останавливать цикл обработки событий и диспетчеризировать события из этой очереди.- Возвращает:
- secondaryLoop — новый объект вторичного цикла, который можно использовать для запуска нового вложенного цикла обработки событий и диспетчеризации событий из этой очереди
- С версии:
- 1.7
- См. также:
isDispatchThread
public static boolean isDispatchThread()
the current AWT EventQueue. Используйте этот метод, чтобы убедиться, что определённая задача выполняется (или не выполняется) в этом потоке. Примечание: используйте методы invokeLater(Runnable) или invokeAndWait(Runnable), чтобы выполнить задачу в потоке диспетчеризации the current AWT EventQueue.
- Возвращает:
- true, если выполнение происходит в потоке диспетчеризации
the current AWT EventQueue - С версии:
- 1.2
- См. также:
invokeLater
public static void invokeLater(Runnable runnable)
run у runnable в dispatch thread объекта the system EventQueue. Это произойдёт после обработки всех ожидающих событий.- Параметры:
-
runnable—Runnable, чей методrunдолжен быть выполнен асинхронно вevent dispatch threadобъектаthe system EventQueue - С версии:
- 1.2
- См. также:
invokeAndWait
public static void invokeAndWait(Runnable runnable) throws InterruptedException, InvocationTargetException
run у runnable в dispatch thread объекта the system EventQueue. Это произойдёт после обработки всех ожидающих событий. Вызов блокируется до завершения этой операции. Этот метод вызовет Error, если его вызвать из event dispatcher thread.- Параметры:
-
runnable—Runnable, чей методrunдолжен быть выполнен синхронно вevent dispatch threadобъектаthe system EventQueue - Исключения:
-
InterruptedException— если какой-либо поток прервал этот поток -
InvocationTargetException— если при выполненииrunnableбыло выброшено исключение - С версии:
- 1.2
- См. также:
© 1993, 2025, 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/25/docs/api/java.desktop/java/awt/EventQueue.html