如何防止窗格监听专用于子节点的鼠标事件

时间:2016-12-13 18:56:05

标签: java javafx

我有Pane容器和这个容器的几个子行。我还有一个Line的事件处理程序:

    EventHandler<MouseEvent> lineOnMouseClicked = new EventHandler<MouseEvent>() {

    @Override
    public void handle(MouseEvent t) {
        System.out.println("Line has been clicked");
    }
};

问题是我还需要像这样的窗格上的事件处理程序:

    EventHandler<MouseEvent> paneOnMouseClicked = new EventHandler<MouseEvent>() {

    @Override
    public void handle(MouseEvent t) {
        System.out.println("Pane Clicked");
    }
};

我想要的是:如果我点击一行,那么需要调用lineOnMouseClicked,而只需调用EventHandler,而不是使用paneOnMouseClicked。

在我的情况下,当我点击一行时,它们都会调用。

我做了一些研究,但不幸的是,没有找到任何有用的东西。

1 个答案:

答案 0 :(得分:3)

在线消费事件:

EventHandler<MouseEvent> lineOnMouseClicked = new EventHandler<MouseEvent>() {

    @Override
    public void handle(MouseEvent t) {
        System.out.println("Line has been clicked");
        t.consume(); // consume event -> no further propagation
    }
};


line.addEventHandler(MouseEvent.MOUSE_CLICKED, lineOnMouseClicked);
pane.addEventHandler(MouseEvent.MOUSE_CLICKED, paneOnMouseClicked);