我已经设置ContextMenu
来处理正确的点击次数,但是当我再次右击时,原始版本不会消失。
代码:
this.table.addEventHandler(MouseEvent.MOUSE_CLICKED, (event) -> {
if (event.getButton() == MouseButton.SECONDARY) {
MenuItem delete = new MenuItem("Delete");
delete.setOnAction((actionEvent) -> {
Action action = Dialogs.create().nativeTitleBar().title("Are you sure?").masthead("This member will be removed from the table")
.message("Are you sure that you want to remove "
+ this.table.getSelectionModel().getSelectedItem().memberProperty.get().get()
+ " from the table?").showConfirm();
if (action == Dialog.Actions.YES || action == Dialog.Actions.OK) {
this.table.getItems().remove(this.table.getSelectionModel().getSelectedItem());
}
});
ContextMenu menu = new ContextMenu(deleteMember);
menu.show(this.table, event.getScreenX(), event.getScreenY());
}
});
答案 0 :(得分:0)
好吧,它看起来像分配了上下文菜单的那一行就是问题所在。我做了menu.show(this.table.getScene().getWindow(), event.getScreenX(), event.getScreenY());
,这使一切顺利。我猜测造成问题的原因是所有分配给所有者变量的工作水平较低。