JavaFX 图表上的 Swing 上下文菜单
Swing context menu on JavaFX Chart
我正在开发一个主要使用 swing 的应用程序,尽管图表对话框使用 JavaFX。 (确切地说,Chart
在 GridPane
中,在 JFXPanel
中。)
首先,Chart
没有实现 setContextMenu
方法来使用 JFX ContextMenu
。我已经看到一个解决方法,通过将处理程序附加到图表的右键单击,但是菜单在失去焦点时不会从 GUI 中删除,而是一直存在,直到用户 1) 触发它再次打开或 2) 单击 a MenuItem
.
chart.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent t) {
if (t.getButton() == MouseButton.SECONDARY) {
contextMenu.show(chart, t.getScreenX(), t.getScreenY());
}
}
});
也就是说,我更愿意使用 Swing JPopupMenu
。我怎样才能将它绑定到我的 Chart
并保持自然行为?
谢谢!
我确定无法使用 JPopupMenu
。
将ContextMenu
添加到JLabel
:
Label contextMenuLabel = new Label();
grid.add(contextMenuLabel, 0, 0); // Add to the same grid after adding the chart
contextMenuLabel.setPrefSize(width, height);
contextMenuLabel.setMinSize(width, height);
contextMenuLabel.setMaxSize(width, height);
ContextMenu contextMenu = new ContextMenu();
contextMenuLabel.setContextMenu(contextMenu);
我正在开发一个主要使用 swing 的应用程序,尽管图表对话框使用 JavaFX。 (确切地说,Chart
在 GridPane
中,在 JFXPanel
中。)
首先,Chart
没有实现 setContextMenu
方法来使用 JFX ContextMenu
。我已经看到一个解决方法,通过将处理程序附加到图表的右键单击,但是菜单在失去焦点时不会从 GUI 中删除,而是一直存在,直到用户 1) 触发它再次打开或 2) 单击 a MenuItem
.
chart.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent t) {
if (t.getButton() == MouseButton.SECONDARY) {
contextMenu.show(chart, t.getScreenX(), t.getScreenY());
}
}
});
也就是说,我更愿意使用 Swing JPopupMenu
。我怎样才能将它绑定到我的 Chart
并保持自然行为?
谢谢!
我确定无法使用 JPopupMenu
。
将ContextMenu
添加到JLabel
:
Label contextMenuLabel = new Label();
grid.add(contextMenuLabel, 0, 0); // Add to the same grid after adding the chart
contextMenuLabel.setPrefSize(width, height);
contextMenuLabel.setMinSize(width, height);
contextMenuLabel.setMaxSize(width, height);
ContextMenu contextMenu = new ContextMenu();
contextMenuLabel.setContextMenu(contextMenu);