Класс EventQueue
public class EventQueue extends Object
EventQueue — это независимый от платформы класс, который очередирует события, как от базовых классов-виртуальных машин, так и от надёжных прикладных классов. Он инкапсулирует асинхронный механизм диспетчеризации событий, который извлекает события из очереди и диспетчеризирует их, вызывая метод dispatchEvent(AWTEvent) в этом EventQueue с событием, подлежащим диспетчеризации, в качестве аргумента. Конкретное поведение этого механизма зависит от реализации. Единственными требованиями являются: события, которые фактически были помещены в эту очередь (обратите внимание, что события, отправленные в EventQueue, могут быть объединены), диспетчеризуются:
- Последовательно.
- То есть, не допускается, чтобы несколько событий из этой очереди были диспетчеризованы одновременно.
- В том же порядке, что и их размещение в очереди.
- То есть, если событие
AWTEventA помещено в очередьEventQueueперед событиемAWTEventB, тогда событие B не будет диспетчеризовано перед событием A.
Некоторые браузеры разделяют апплеты в разных кодовых базах на отдельные контексты и устанавливают барьеры между этими контекстами. В таком случае для каждого контекста будет свой EventQueue. Другие браузеры помещают все апплеты в один контекст, подразумевая, что будет только один глобальный EventQueue для всех апплетов. Это поведение зависит от реализации. Обратитесь к документации вашего браузера для получения дополнительной информации.
Сведения о проблемах с потоками в механизме диспетчеризации событий см. в проблемах потоков AWT.
- Since:
- 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 |
Приводит к тому, что runnable вызовет свой метод run в потоке диспетчеризации dispatch thread the system EventQueue. |
static void |
invokeLater |
Приводит к тому, что runnable вызовет свой метод run в потоке диспетчеризации dispatch thread the system EventQueue. |
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) |
| Другое | Элемент меню | 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(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 в диспетчерском потоке 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
runnable в диспетчерском потоке dispatch thread the system EventQueue после обработки всех ожидающих событий. Вызов блокируется, пока это не произойдёт. Этот метод выбросит ошибку, если вызывается из диспетчерского потока event dispatcher thread.- Параметры:
-
runnable- объектRunnable, методrunкоторого должен быть выполнен синхронно в диспетчерском потокеevent dispatch threadthe system EventQueue - Исключения:
-
InterruptedException- если любой поток прервал этот поток -
InvocationTargetException- если при выполненииrunnableпроизошло исключение - С тех пор:
- 1.2
- См. также:
© 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