如何将上下文菜单添加到canvas元素?

时间:2016-05-03 16:21:07

标签: java javafx contextmenu java-canvas

问题:无法简单地添加' ContextMenu通过addContextMenu(菜单)到Canvas或Pane元素,它只适用于javafx.scene.control元素(Canvas或Panel都不扩展此类)。

问题:有没有'清洁'如何注册' ContextMenu项目到Canvas元素?我期待这个菜单的标准行为(人民币点击Canvas元素后显示,点击LMB时自动隐藏等。)

3 个答案:

答案 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”]有效,但不是一个好方法。