Класс EventQueue
public class EventQueue extends Object
EventQueue — это независимый от платформы класс, который очередирует события, как из базовых классов-виртуальных машин, так и из доверенных прикладных классов. Он инкапсулирует механизм асинхронной обработки событий, который извлекает события из очереди и отправляет их, вызывая метод dispatchEvent(AWTEvent) у этого EventQueue с событием, подлежащим обработке, в качестве аргумента. Конкретное поведение этого механизма зависит от реализации. Единственные требования заключаются в том, что события, которые фактически были помещены в эту очередь (обратите внимание, что события, публикуемые в EventQueue, могут объединяться), обрабатываются:
- Последовательно.
- То есть, не допускается одновременная обработка нескольких событий из этой очереди.
- В том же порядке, в котором они были помещены в очередь.
- То есть, если событие A помещено в
EventQueueдо события B, то событие 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 |
Публикует событие в стиле 1.1 в EventQueue. |
void |
push |
Заменяет существующий EventQueue указанным. |
Подробное описание конструкторов
EventQueue
public EventQueue()
EventQueue.Подробное описание методов
postEvent
public void postEvent(AWTEvent theEvent)
EventQueue. Если в очереди уже есть событие с тем же идентификатором и источником события, будет вызван метод Component источника coalesceEvents.- Параметры:
-
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() |
| Другое | Компонент | 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(java.lang.Runnable) или invokeAndWait(java.lang.Runnable) для выполнения задачи в потоке обработки событий the current AWT EventQueue.
- Возвращает:
- true, если выполняется в потоке обработки событий
the current AWT EventQueue - С тех пор:
- 1.2
- См. также:
invokeLater
public static void invokeLater(Runnable runnable)
runnable вызвать метод run в потоке обработки событий dispatch thread the system EventQueue. Это произойдёт после обработки всех ожидающих событий.- Параметры:
-
runnable-Runnable, чей методrunдолжен быть выполнен асинхронно в потоке обработки событийevent dispatch threadthe system EventQueue - С тех пор:
- 1.2
- См. также:
invokeAndWait
public static void invokeAndWait(Runnable runnable) throws InterruptedException, InvocationTargetException
run для runnable в dispatch thread the system EventQueue. Это произойдёт после обработки всех ожидающих событий. Вызов блокируется до завершения этого процесса. Данный метод выбросит ошибку, если вызван из event dispatcher thread.- Параметры:
-
runnable-Runnable, чьё методrunдолжно быть выполнено синхронно вevent dispatch threadthe 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/EventQueue.html