JavaFx,事件拦截/消费

Qui*_*ovi 3 javafx javafx-2 javafx-8

我有这个部分场景图树:

CustomPane (with onMouseClicked Handler)
 ? ChildNode (with onMousePressed Handler)
Run Code Online (Sandbox Code Playgroud)

当我在ChildNode中捕获MousePressed事件时,我可以使用它,以便父级不会收到MousePressed事件.但我想使用相关的MouseClicked事件.因此,在Child上按鼠标不会在Parent上触发MouseClicked事件.

Ser*_*nev 5

  1. 您可以添加ChildNode#onMouse...将使用所有事件的特定处理程序.

  2. 或提供您自己的EventDispatcher:

    child.setEventDispatcher(new EventDispatcher() {
    
        @Override
        public Event dispatchEvent(Event event, EventDispatchChain tail) {
            boolean valid = myValidationLogicForEvents(event);
            return valid ? tail.dispatchEvent(event) : null;
        }
    });
    
    Run Code Online (Sandbox Code Playgroud)