Spec-Zone.ru › OpenJDK 25

Класс EventQueue

java.lang.Object
java.awt.EventQueue
public class EventQueue extends Object
EventQueue — это независимый от платформы класс, который помещает в очередь события как из базовых классов peer, так и из доверенных классов приложения.

Он инкапсулирует механизм асинхронной диспетчеризации событий, который извлекает события из очереди и диспетчеризирует их, вызывая метод dispatchEvent(AWTEvent) этого EventQueue, передавая диспетчеризируемое событие в качестве аргумента. Конкретное поведение этого механизма зависит от реализации. Единственные требования заключаются в том, что события, фактически помещённые в эту очередь (обратите внимание, что события, отправляемые в EventQueue, могут объединяться), диспетчеризируются:

Последовательно.
То есть одновременная диспетчеризация нескольких событий из этой очереди не допускается.
В том же порядке, в котором они помещены в очередь.
То есть, если AWTEvent A помещено в EventQueue раньше, чем AWTEvent 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)
Вызывает метод run у runnable в dispatch thread объекта the system EventQueue.
static void invokeLater(Runnable runnable)
Вызывает метод run у runnable в 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)
Помещает в EventQueue событие в стиле версии 1.1.
void push(EventQueue newEventQueue)
Заменяет существующий EventQueue указанным.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, 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 временные метки есть только у 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(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(Runnable) или invokeAndWait(Runnable), чтобы выполнить задачу в потоке диспетчеризации the current AWT EventQueue.

Возвращает:
true, если выполнение происходит в потоке диспетчеризации the current AWT EventQueue
С версии:
1.2
См. также:
  • invokeLater(Runnable)
  • invokeAndWait(Runnable)
  • Toolkit.getSystemEventQueue()

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(Runnable)
  • Toolkit.getSystemEventQueue()
  • isDispatchThread()

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
См. также:
  • invokeLater(Runnable)
  • Toolkit.getSystemEventQueue()
  • isDispatchThread()

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, где представлены более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/EventQueue.html

Spec-Zone.ru

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