我正在创建一个自定义CheckBoxTableView,其中所选项目与CheckBox一起显示。如果用户在选择项目后尝试对表格进行排序,则会出现问题。我想提示用户,看看他们是否愿意继续。如果是这样,我想清除选择,如果没有,只需消耗该事件,这样就不会发生排序。
不幸的是 - 我的EventFilter似乎在排序完成后开始。
在TableView构造函数中,我放置了以下代码:
addEventFilter(MouseEvent.MOUSE_CLICKED, event -> {
if(event.getTarget() instanceof TableColumnHeader) {
Alert a = new Alert(Alert.AlertType.CONFIRMATION);
a.setContextText("you sure?");
Optional<ButtonType> bt = a.showAndWait();
if(bt.isPresent() && bt.get() == ButtonType.OK){
//Clear selection
getSelectionModel().clearSelection();
}else {
event.consume();
}
}
});
但是当我的EventFilter触发时,表已被排序。
有什么想法吗?
答案 0 :(得分:0)
使用MouseEvent.MOUSE_PRESSED
MouseEvent.MOUSE_CLICKED
之后 MouseEvent.MOUSE_RELEASED
被解雇,为时太晚,无法拦截听众和听众:)