我有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。
在我的情况下,当我点击一行时,它们都会调用。
我做了一些研究,但不幸的是,没有找到任何有用的东西。
答案 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);