我对应该将动作逻辑(用户从弹出菜单中选择菜单项会发生什么)放置在何处感到困惑。当前,我将其存储在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 Action,ActionListener用于JMenuItems,请阅读Oracle教程以获取工作代码示例