JavaFx, event interception/consumption

javafx, javafx-2, javafx-8

Solution

You can add specific `ChildNode#onMouse...` handlers which will consume all events.

or provide your own `EventDispatcher`:

child.setEventDispatcher(new EventDispatcher() {

    @Override
    public Event dispatchEvent(Event event, EventDispatchChain tail) {
        boolean valid = myValidationLogicForEvents(event);
        return valid ? tail.dispatchEvent(event) : null;
    }
});

Problem

I've got this partial scenegraph tree : ``` CustomPane (with onMouseClicked Handler) → ChildNode (with onMousePressed Handler) ``` When I catch the MousePressed event in the ChildNode, I can consume it, so that the parent doesn't receive a MousePressed event. But I would like to consume the associated MouseClicked event. So that pressing the mouse on the Child doesn't fire a MouseClicked event on the Parent.

Original source