Spec-Zone.ru › OpenJDK 24

Класс EventQueue

java.lang.Object
java.awt.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(AWTEvent event)
Обрабатывает событие.
static AWTEvent getCurrentEvent()
Возвращает событие, в настоящее время обрабатываемое EventQueue, связанной с вызывающим потоком.
static long getMostRecentEventTime()
Возвращает метку времени последнего события, имеющего метку времени, и которое было обработано из EventQueue, связанной с вызывающим потоком.
AWTEvent getNextEvent()
Удаляет событие из EventQueue и возвращает его.
static void invokeAndWait(Runnable runnable)
Вызывает метод runnable у run в потоке обработки событий dispatch thread the system EventQueue.
static void invokeLater(Runnable runnable)
Вызывает метод runnable у run в потоке обработки событий dispatch thread the system EventQueue.
static boolean isDispatchThread()
Возвращает true, если вызывающий поток является потоком обработки событий the current AWT EventQueue.
AWTEvent peekEvent()
Возвращает первое событие в EventQueue без его удаления.
AWTEvent peekEvent(int id)
Возвращает первое событие с указанным идентификатором, если таковое имеется.
protected void pop()
Останавливает обработку событий с использованием этого EventQueue.
void postEvent(AWTEvent theEvent)
Публикует событие в стиле 1.1 в EventQueue.
void push(EventQueue newEventQueue)
Заменяет существующий EventQueue указанным.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

EventQueue

public EventQueue()
Инициализирует новый экземпляр 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, связанным с вызывающим потоком. Если в настоящее время обрабатывается событие с меткой времени, будет возвращена его метка времени. Если события еще не обрабатывались, вместо этого будет возвращено время инициализации EventQueue.В текущей версии JDK только InputEvent, ActionEvent и InvocationEvent имеют метки времени; однако в будущих версиях JDK могут быть добавлены метки времени к дополнительным типам событий. Обратите внимание, что этот метод следует вызывать только из event dispatching thread приложения. Если этот метод вызывается из другого потока, будет возвращено текущее системное время (как сообщает 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 - если для этого EventQueue не было предыдущего push.
С тех пор:
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 thread the system EventQueue
С тех пор:
1.2
См. также:
  • invokeAndWait(java.lang.Runnable)
  • Toolkit.getSystemEventQueue()
  • isDispatchThread()

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 thread the system EventQueue
Исключения:
InterruptedException - если какая-либо нить прервала текущую нить
InvocationTargetException - если при выполнении runnable произошла ошибка
С:
1.2
См. также:
  • invokeLater(java.lang.Runnable)
  • Toolkit.getSystemEventQueue()
  • isDispatchThread()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API