Module  javafx.base
软件包  javafx.event

Interface EventDispatcher



  • public interface EventDispatcher
    一个EventDispatcher代表一个事件调度和处理实体。 当它用于Event需要被分派给相关的EventTarget通过EventDispatchChain由目标指定。 链中的每个EventDispatcher都可以影响事件路径和事件本身。 一个EventDispatcher可以出现在多个链。

    系统定义事件传递的两个连续阶段。 第一阶段称为捕获阶段,当事件从与事件目标相关联的EventDispatchChain的第一个元素移动到其最后一个元素时发生。 如果事件目标是某些层次结构的一部分,则此阶段中事件的方向通常与从层次结构的根元素到目标的方向相对应。 第二阶段称为起泡阶段,并以与第一阶段相反的顺序进行。 所以事件从这个阶段的EventDispatchChain的最后一个元素返回到第一个元素。 通常这对应于事件目标的层次结构中从事件目标回到根的方向。

    每个EventDispatcherEventDispatchChain负责事件分派期间转发事件到该链的其余部分。 这种转发发生在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; 
    }
    从以下版本开始:
    JavaFX 2.0
    • 方法详细信息

      • dispatchEvent

        Event dispatchEvent​(Event event,
                            EventDispatchChain tail)
        通过这个EventDispatcher调度指定的事件。 是否需要事件处理。 事件及其进一步的路径都可以通过这种方法修改。 如果事件在捕获阶段未处理/消耗,则应将其发送到链的其余部分( event = tail.dispatch(event); )。
        参数
        event - 事件发送
        tail - 链条的其余部分发送到
        结果
        the return event or null if the event has been handled / consumed