Spec-Zone.ru › OpenJavaFX 17

Интерфейс EventDispatcher

public interface EventDispatcher
Объект EventDispatcher представляет собой сущность, обрабатывающую и распространяющую события. Он используется, когда событие Event необходимо отправить связанному с ним EventTarget через EventDispatchChain, указанный целевым объектом. Каждый элемент EventDispatcher в цепочке может повлиять на путь события и само событие. Один EventDispatcher может присутствовать в нескольких цепочках.

Система определяет две последовательные фазы доставки событий. Первая фаза называется фазой захвата и происходит, когда событие перемещается от первого элемента EventDispatchChain, связанного с целевым объектом, к его последнему элементу. Если целевой объект является частью иерархии, направление события в этой фазе обычно соответствует направлению от корневого элемента иерархии к целевому объекту. Вторая фаза называется фазой всплытия и происходит в обратном порядке по сравнению с первой фазой. Таким образом, событие возвращается обратно от последнего элемента EventDispatchChain к его первому элементу в этой фазе. Обычно это соответствует направлению от целевого объекта обратно к корню в иерархии целевого объекта.

Каждый EventDispatcher в EventDispatchChain отвечает за пересылку события остальным элементам цепочки во время распространения события. Эта пересылка происходит в методе dispatchEvent и формирует цепочку вложенных вызовов, что позволяет одному EventDispatcher увидеть событие во время обеих фаз распространения в одном вызове dispatchEvent.

Шаблон для реализации dispatchEvent.

public Event dispatchEvent(Event event, EventDispatchChain tail) {
    // capturing phase, can handle / modify / substitute / divert the event

    if (notHandledYet) {
        // forward the event to the rest of the chain
        event = tail.dispatchEvent(event);

        if (event != null) {
            // bubbling phase, can handle / modify / substitute / divert
            // the event
        }
    }

    return notHandledYet ? event : null;
}
Since:
JavaFX 2.0

Краткое описание методов

Модификатор и тип Метод Описание
Event dispatchEvent​(Event event, EventDispatchChain tail)
Распространяет указанное событие через этот EventDispatcher.

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

dispatchEvent

Event dispatchEvent(Event event, EventDispatchChain tail)
Распространяет указанное событие через этот EventDispatcher. Выполняет необходимую обработку события. В этом методе могут быть изменены как само событие, так и его дальнейший путь. Если событие не обрабатывается/не потребляется во время фазы захвата, оно должно быть распространено дальше по цепочке (event = tail.dispatch(event);).
Parameters:
event - событие для распространения
tail - остальная часть цепочки для распространения события
Returns:
возвращаемое событие или null, если событие было обработано/потребленно

© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

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