1

在我的应用程序中,我有一个窗格,它有一个上下文菜单,我可以通过它添加一个 ImageView,我也希望有一个上下文菜单。
可悲的是,当我请求该 ImageView 的上下文菜单时,窗格的菜单也会打开。我怎样才能让它不出现而不必只有一个 ContextMenu 对象,我每次都会给出不同的 MenuItems(对我来说似乎不是很有效)
我是 JavaFX 新手,所以感谢您的耐心。

一次有两个上下文菜单

代码:

imgView.setOnContextMenuRequested(eventMenu -> {
            tableContextMenu.show(paneWorkspace, eventMenu.getSceneX(), eventMenu.getSceneY());
            if (paneContextMenu.isShowing()) {
                paneContextMenu.hide();
            }
        });
paneWorkspace.setOnContextMenuRequested(event ->
            paneContextMenu.show(paneWorkspace, event.getSceneX(), event.getSceneY()));

*注意:paneContextMenu.hide()不起作用*

提前谢谢你:-)
4

1 回答 1

1

编辑:
我尝试了James_D的答案,它成功了。感谢分享!我eventMenu.consume()在 lambda 函数中调用了任何地方,但没有弹出其他上下文菜单。
但是我觉得这很奇怪,因为我在 ImageView 的setOnContextMenuRequest()方法中调用它并且它消耗了另一个上下文菜单。

更改代码:

table.setOnContextMenuRequested(eventMenu -> {
            eventMenu.consume();
            tableContextMenu.show(paneWorkspace, eventMenu.getSceneX(), eventMenu.getSceneY());
        });
paneWorkspace.setOnContextMenuRequested(event ->
            paneContextMenu.show(paneWorkspace, event.getSceneX(), event.getSceneY())
    );
于 2021-07-02T21:05:42.207 回答