我对动作逻辑(用户从弹出窗口中选择菜单项时会发生什么)的位置感到困惑。目前,我将它存储在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);
这个编译好了。它确实按预期显示弹出菜单,但是在选择弹出窗口中的一个菜单选项后,所有菜单选项都是静音的。没有消息显示。我需要把它放在其他地方吗?
答案 0 :(得分:1)
您必须将MouseListener添加到JMenuItems
添加适当的侦听器以使用Swing Action,将ActionListener用于JMenuItems,阅读Oracle教程以获取有效的代码示例
答案 1 :(得分:0)
将MouseListner添加到菜单项
myListener myListener = new myListener();
item1.addMouseListener(myListener);
item2.addMouseListener(myListener);
似乎你的方法有点不对劲。请参阅How to Use Menus