1

我正在开发一个 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讨论的属性,但这似乎没有帮助。

4

0 回答 0