Spec-Zone.ru › OpenJDK 17

Класс EventQueue

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

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

Последовательно.
То есть, не допускается, чтобы несколько событий из этой очереди были диспетчеризованы одновременно.
В том же порядке, что и их размещение в очереди.
То есть, если событие AWTEvent A помещено в очередь EventQueue перед событием AWTEvent B, тогда событие B не будет диспетчеризовано перед событием A.

Некоторые браузеры разделяют апплеты в разных кодовых базах на отдельные контексты и устанавливают барьеры между этими контекстами. В таком случае для каждого контекста будет свой EventQueue. Другие браузеры помещают все апплеты в один контекст, подразумевая, что будет только один глобальный EventQueue для всех апплетов. Это поведение зависит от реализации. Обратитесь к документации вашего браузера для получения дополнительной информации.

Сведения о проблемах с потоками в механизме диспетчеризации событий см. в проблемах потоков AWT.

Since:
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)
Другое Элемент меню 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
См. также:
  • 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 в диспетчерском потоке 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
Принуждает выполнение метода 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, 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

Spec-Zone.ru

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