我正在开发一个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
财产谈论here,但这似乎没有帮助。