Класс EventQueue
public class EventQueue extends Object
EventQueue — это независимый от платформы класс, который помещает в очередь события как из базовых классов-пиров, так и из доверенных классов приложения. Он инкапсулирует механизм асинхронной диспетчеризации событий, который извлекает события из очереди и диспетчеризует их, вызывая метод dispatchEvent(AWTEvent) этого EventQueue с диспетчеризуемым событием в качестве аргумента. Конкретное поведение этого механизма зависит от реализации. Единственные требования состоят в том, что события, фактически помещенные в эту очередь (обратите внимание, что события, отправляемые в EventQueue, могут объединяться), диспетчеризуются:
- Последовательно.
- То есть несколько событий из этой очереди не могут диспетчеризоваться одновременно.
- В том же порядке, в котором они помещаются в очередь.
- То есть если
AWTEventA помещено вEventQueueраньше, чемAWTEventB, событие B не будет диспетчеризовано раньше события A.
Сведения о проблемах многопоточности, связанных с механизмом диспетчеризации событий, см. в разделе Проблемы многопоточности 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 указанным. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Определяет, является ли другой объект «равным» этому. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Механизм финализации устарел и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает значение хеш-кода этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного времени. |
Подробное описание конструкторов
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 временные метки есть только у InputEvents, ActionEvents и InvocationEvents; однако в будущих версиях 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.