问题:无法简单地添加' ContextMenu通过addContextMenu(菜单)到Canvas或Pane元素,它只适用于javafx.scene.control元素(Canvas或Panel都不扩展此类)。
问题:有没有'清洁'如何注册' ContextMenu项目到Canvas元素?我期待这个菜单的标准行为(人民币点击Canvas元素后显示,点击LMB时自动隐藏等。)
答案 0 :(得分:3)
Canvas canvas = ... ;
ContextMenu menu = ... ;
canvas.setOnContextMenuRequested(e -> menu.show(canvas, e.getScreenX(), e.getScreenY()));
答案 1 :(得分:0)
在上下文菜单可见的情况下单击画布时,James_D的解决方案可能不会关闭菜单。看到这个错误:
https://bugs.openjdk.java.net/browse/JDK-8095591
因此,我建议使用:
Canvas canvas = ... ;
ContextMenu menu = ... ;
canvas.setOnContextMenuRequested(e -> menu.show(canvas.getScene().getWindow(), e.getScreenX(), e.getScreenY()));
答案 2 :(得分:-1)
也许您可以使用Chrome扩展程序的contextMenu。这是the official document.
到目前为止,我发现的唯一问题是画布的Context类型不清楚。 [“all”]有效,但不是一个好方法。