Класс EventQueue
- java.lang.Object
-
- java.awt.EventQueue
public class EventQueue extends Object
EventQueue — это независимый от платформы класс, который очередирует события, как от базовых классов-видов, так и от доверенных прикладных классов.
Он инкапсулирует асинхронную машину обработки событий, которая извлекает события из очереди и отправляет их, вызывая метод dispatchEvent(AWTEvent) в этом EventQueue с событием для отправки в качестве аргумента. Конкретное поведение этой машины зависит от реализации. Единственные требования заключаются в том, что события, которые были фактически помещены в эту очередь (обратите внимание, что события, публикуемые в EventQueue могут быть объединены), отправляются:
- Последовательно.
- То есть, не допускается, чтобы несколько событий из этой очереди обрабатывались одновременно.
- В том же порядке, в котором они помещаются в очередь.
- То есть, если событие
AWTEventA помещено вEventQueueперед событиемAWTEventB, тогда событие B не будет обработано до события A.
Некоторые браузеры разделяют апплеты в разных кодовых базах на отдельные контексты и устанавливают барьеры между этими контекстами. В таком случае будет по одному EventQueue на контекст. Другие браузеры помещают все апплеты в один контекст, что подразумевает существование только одной глобальной EventQueue для всех апплетов. Это поведение зависит от реализации. Обратитесь к документации вашего браузера для получения дополнительной информации.
Сведения о проблемах с потоками в механизме обработки событий см. в разделе Проблемы с потоками AWT.
- С:
- 1.1
Конструкторы
| Конструктор и описание |
|---|
EventQueue() |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
SecondaryLoop |
createSecondaryLoop() Создаёт новый |
protected void |
dispatchEvent(AWTEvent event) Отправляет событие. |
static AWTEvent |
getCurrentEvent() Возвращает текущее событие, обрабатываемое |
static long |
getMostRecentEventTime() Возвращает метку времени самого последнего события с меткой времени, которое было обработано из |
AWTEvent |
getNextEvent() Удаляет событие из |
static void |
invokeAndWait(Runnable runnable) Заставляет |
static void |
invokeLater(Runnable runnable) Заставляет |
static boolean |
isDispatchThread() Возвращает true, если вызывающий поток является потоком обработки |
AWTEvent |
peekEvent() Возвращает первое событие в |
AWTEvent |
peekEvent(int id) Возвращает первое событие с указанным идентификатором, если таковое имеется. |
protected void |
pop() Останавливает обработку событий с использованием этого |
void |
postEvent(AWTEvent theEvent) Публикует событие в стиле 1.1 в |
void |
push(EventQueue newEventQueue) Заменяет существующий |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
EventQueue
public EventQueue()
Методы
postEvent
public void postEvent(AWTEvent theEvent)
Добавляет событие в стиле 1.1 в 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. В текущей версии JDK метки времени имеют только события InputEvent, ActionEvent, и InvocationEvent; однако в будущих версиях JDK метки времени могут быть добавлены для других типов событий. Обратите внимание, что этот метод должен вызываться только из потока обработки событий приложения. Если этот метод вызывается из другого потока, возвращается текущее системное время (как сообщает System.currentTimeMillis()).
- Возвращает:
- метку времени последнего
InputEvent,ActionEvent, илиInvocationEvent, илиSystem.currentTimeMillis(), если этот метод вызывается из потока, отличного от потока обработки событий - С:
- 1.4
- См. также:
-
InputEvent.getWhen(),ActionEvent.getWhen(),InvocationEvent.getWhen(),isDispatchThread()
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()
pop
protected void pop()
throws EmptyStackException Прекращает обработку событий с использованием этой EventQueue. Все ожидающие события передаются предыдущей EventQueue для обработки.
Предупреждение: Чтобы избежать тупика, не объявляйте этот метод синхронизированным в подклассе.
- Исключения:
-
EmptyStackException- если ранее не было выполнено push для этойEventQueue - С:
- 1.2
- См. также:
push(java.awt.EventQueue)
createSecondaryLoop
public SecondaryLoop createSecondaryLoop()
Создаёт новую secondary loop , связанную с этой очередью событий. Используйте методы SecondaryLoop.enter() и SecondaryLoop.exit() для запуска и остановки цикла обработки событий и обработки событий из этой очереди.
- Возвращает:
- secondaryLoop Новый объект вторичного цикла, который может быть использован для запуска нового вложенного цикла обработки событий и обработки событий из этой очереди
- С:
- 1.7
- См. также:
-
SecondaryLoop.enter(),SecondaryLoop.exit()
isDispatchThread
public static boolean isDispatchThread()
Возвращает true, если вызывающий поток является потоком диспетчеризации the current AWT EventQueue. Используйте этот метод, чтобы убедиться, что конкретная задача выполняется (или не выполняется) там.
Примечание: используйте методы invokeLater(java.lang.Runnable) или invokeAndWait(java.lang.Runnable) для выполнения задачи в потоке диспетчеризации the current AWT EventQueue.
- Возвращает:
- true, если выполняется в потоке диспетчеризации
the current AWT EventQueue - С:
- 1.2
- См. также:
-
invokeLater(java.lang.Runnable),invokeAndWait(java.lang.Runnable),Toolkit.getSystemEventQueue()
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(java.lang.Runnable),Toolkit.getSystemEventQueue(),isDispatchThread()
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
- См. также:
-
invokeLater(java.lang.Runnable),Toolkit.getSystemEventQueue(),isDispatchThread()
© 1993, 2020, 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.