Класс EventQueue
public class EventQueue extends Object
EventQueue — это платформонезависимый класс, который упорядочивает события, как из базовых классов-виртуальных машин, так и из надёжных классов-приложений. Он инкапсулирует асинхронную машину обработки событий, которая извлекает события из очереди и отправляет их, вызывая метод 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 |
Опубликовывает событие типа 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
runnable метод run в потоке обработки событий dispatch thread the system EventQueue. Это произойдет после обработки всех ожидающих событий. Вызов блокируется до тех пор, пока это не произойдет. Этот метод выбросит ошибку, если вызывается из потока обработки событий event dispatcher thread.- Параметры:
-
runnable-Runnable, чьего методаrunдолжно быть выполнено синхронно в потоке обработки событийevent dispatch threadthe system EventQueue - Исключения:
-
InterruptedException- если любой поток прервал этот поток -
InvocationTargetException- если при выполненииrunnableвыбрасывается исключение - С:
- 1.2
- См. также:
© 1993, 2023, 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/21/docs/api/java.desktop/java/awt/EventQueue.html