我正在开发一个 Java Swing 应用程序,其中包含多个面板,其中之一是 NASA 的 WorldWind。在这个 WorldWind 面板中,我需要有一个用于各种操作的右键菜单。我成功添加了右键菜单,一切都很好,直到用户调整窗口大小。
我不确定该操作会导致右键单击菜单停止工作。鼠标侦听器仍然可以正常工作,但菜单不再显示。没有一个对象被垃圾收集,似乎没有任何改变。
以下是如何设置我的代码的快速示例:
class ClickListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e) == true) {
showRightClickMenu(e);
} else {
addPoint(e);
}
}
}
void showRightClickMenu(MouseEvent e) {
System.out.println("In Right Click");
if (menu == null) {
setupRightClickMenu();
}
menu.show(e.getComponent(), e.getX(), e.getY());
}
void setupRightClickMenu() {
menu = new JPopupMenu("RightClick");
JMenuItem button1 = new JMenuItem("Show Waypoint Table");
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// ptTable.showTable();
}
});
menu.add(button1);
JMenuItem button2 = new JMenuItem("Clear Waypoints");
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
ptLayer.removeAllRenderables();
}
});
menu.add(button2);
}
我可以在应用程序启动时将大小设置为我想要的任何大小,并且右键单击可以工作,但是一旦我调整大小,它就会失败。有任何想法吗?
更新
实际上,在与我一起工作的其他人多玩了一会儿之后,它看起来可能正在绘制 WorldWind 画布后面的菜单。我不确定这是为什么,但我需要确保它显示在它前面。
我尝试更改此处JPopupMenu
讨论的属性,但这似乎没有帮助。