如何将上下文菜单添加到 canvas 元素?
How to add context menu to a canvas element?
问题: 无法通过 addContextMenu(menu) 将 'add' ContextMenu 简单地添加到 Canvas 或 Pane 元素,这仅适用于 javafx.scene.control 元素(Canvas 或 Panel 均未扩展此 class)。
问题: 是否有任何 'clean' 方法将 'register' 上下文菜单项添加到 Canvas 元素?我期望此菜单的标准行为(在 RMB 单击 Canvas 元素后显示,在用 LMB 等单击时自动隐藏)。
Canvas canvas = ... ;
ContextMenu menu = ... ;
canvas.setOnContextMenuRequested(e -> menu.show(canvas, e.getScreenX(), e.getScreenY()));
也许您可以使用 Chrome 扩展程序的上下文菜单。这里是 the official document.
到目前为止我发现的唯一问题是 canvas 的上下文类型不明确。 ["all"] 可行,但不是一个好方法。
James_D 的解决方案在上下文菜单可见时单击 canvas 时可能不会关闭菜单。看到这个错误:
https://bugs.openjdk.java.net/browse/JDK-8095591
因此,我建议使用:
Canvas canvas = ... ;
ContextMenu menu = ... ;
canvas.setOnContextMenuRequested(e -> menu.show(canvas.getScene().getWindow(), e.getScreenX(), e.getScreenY()));
问题: 无法通过 addContextMenu(menu) 将 'add' ContextMenu 简单地添加到 Canvas 或 Pane 元素,这仅适用于 javafx.scene.control 元素(Canvas 或 Panel 均未扩展此 class)。
问题: 是否有任何 'clean' 方法将 'register' 上下文菜单项添加到 Canvas 元素?我期望此菜单的标准行为(在 RMB 单击 Canvas 元素后显示,在用 LMB 等单击时自动隐藏)。
Canvas canvas = ... ;
ContextMenu menu = ... ;
canvas.setOnContextMenuRequested(e -> menu.show(canvas, e.getScreenX(), e.getScreenY()));
也许您可以使用 Chrome 扩展程序的上下文菜单。这里是 the official document.
到目前为止我发现的唯一问题是 canvas 的上下文类型不明确。 ["all"] 可行,但不是一个好方法。
James_D 的解决方案在上下文菜单可见时单击 canvas 时可能不会关闭菜单。看到这个错误:
https://bugs.openjdk.java.net/browse/JDK-8095591
因此,我建议使用:
Canvas canvas = ... ;
ContextMenu menu = ... ;
canvas.setOnContextMenuRequested(e -> menu.show(canvas.getScene().getWindow(), e.getScreenX(), e.getScreenY()));