你在哪里存储JPopupMenu的逻辑?

时间:2013-11-09 13:32:21

标签: java swing jmenuitem jpopupmenu

我对动作逻辑(用户从弹出窗口中选择菜单项时会发生什么)的位置感到困惑。目前,我将它存储在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); 

这个编译好了。它确实按预期显示弹出菜单,但是在选择弹出窗口中的一个菜单选项后,所有菜单选项都是静音的。没有消息显示。我需要把它放在其他地方吗?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

将MouseListner添加到菜单项

myListener myListener = new myListener();
item1.addMouseListener(myListener);
item2.addMouseListener(myListener);

似乎你的方法有点不对劲。请参阅How to Use Menus