2

问题:不可能通过 addContextMenu(menu) 简单地将 ContextMenu '添加'到 Canvas 或 Pane 元素,它仅适用于 javafx.scene.control 元素(并且 Canvas 或 Panel 都不扩展此类)。

问题:是否有任何“干净”的方式将 ContextMenu 项目“注册”到 Canvas 元素?我期望此菜单的标准行为(在 RMB 单击 Canvas 元素后显示,在单击 LMB 时自动隐藏等)。

4

3 回答 3

4
Canvas canvas = ... ;
ContextMenu menu = ... ;

canvas.setOnContextMenuRequested(e -> menu.show(canvas, e.getScreenX(), e.getScreenY()));
于 2016-05-03T19:19:44.367 回答
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()));
于 2019-01-29T15:03:43.477 回答
-1

也许你可以使用 Chrome 扩展的 contextMenu。这是官方文件。

到目前为止,我发现的唯一问题是画布的上下文类型不清楚。["all"] 有效,但不是一个好方法。

于 2016-08-11T04:50:06.463 回答