Spec-Zone.ru › OpenJDK 8

Класс 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.

С:
1.1

Конструкторы

Конструктор и описание
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()

Методы

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 thread the 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 thread the 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.

Spec-Zone.ru

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