我对应该将动作逻辑(用户从弹出菜单中选择菜单项会发生什么)放置在何处感到困惑。当前,我将其存储在JPopupMenu的子类中,但是当我单击菜单项时,它似乎没有调用该事件。

子类代码:

public class MyPopupMenu extends JPopupMenu {
    JMenuItem item1;
    JMenuItem item2;

    public MyPopupMenu() {
        item1 = new JMenuItem("New Tab");
        item2 = new JMenuItem("Close Tab");

        add(item1);
        add(item2);

    }

    class myListener extends MouseAdapter {
        @Override
        public void mouseClicked(MouseEvent ev) {
            System.out.println("I've been clicked!");
        }
    }
}


我通过调用setComponentPopupMenu方法将其附加到我的JTabbedPane上。

myTabPane.setComponentPopupMenu(myPopupMenu);


这样编译就可以了。并且确实按预期显示了弹出菜单,但是在弹出菜单中选择菜单选项之一后,所有菜单均处于静默状态。没有消息显示。我需要把它放在其他地方吗?

最佳答案

您必须将MouseListener添加到JMenuItems
添加适当的侦听器以将Swing ActionActionListener用于JMenuItems,请阅读Oracle教程以获取工作代码示例

10-08 00:08