Listview 无子项的stackPane JavaFX上的鼠标事件

Listview 无子项的stackPane JavaFX上的鼠标事件,listview,javafx,event-handling,mouseevent,Listview,Javafx,Event Handling,Mouseevent,您好,当鼠标单击stackpane(父)时,我试图取消选择listview项。我尝试了这段代码,但当用户单击按钮(Stackpane的子项)时,事件仍然被触发: stackPane.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent mouseEvent) {

您好,当鼠标单击stackpane(父)时,我试图取消选择listview项。我尝试了这段代码,但当用户单击按钮(Stackpane的子项)时,事件仍然被触发:

stackPane.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent mouseEvent) {
                listVisits.getSelectionModel().clearSelection();
            }
        });
stackPane.addEventFilter(MouseEvent.MOUSE_按下,new EventHandler()){
@凌驾
公共无效句柄(MouseEvent MouseEvent){
listVisits.getSelectionModel().clearSelection();
}
});

如何仅触发stackpane鼠标事件单击?

您不需要按下
鼠标。替换为单击鼠标

stackPane.setOnMouseClicked(event -> {
     listVisits.getSelectionModel().clearSelection();
});

您可以使用
MouseEvent
pickResult
属性轻松区分案例。请注意,在这种情况下,不需要使用事件过滤器,允许使用事件处理程序,从而导致代码略短(当然,除非您需要将其设置为另一个值)

请注意,如果您只想排除部分子项而不是全部子项,则可以使用事件处理程序为某些子项使用事件。如果执行此操作,则不再需要检查
pickResult

eventBlockingChild.setOnMousePressed(MouseEvent::consume);

请..我试图将按下的
鼠标替换为单击的
鼠标
,但单击后listview行仅保持选中状态一小会儿,这并不能真正解决问题。
StackPane
的任何子项未使用click事件,仍会清除选择。。。
eventBlockingChild.setOnMousePressed(MouseEvent::consume);