我已编写代码在JMenuItem上执行click事件,但在调试时没有触发。 (我知道我不应该在这个论坛上提出这些问题,但我是这个论坛的新手)
public class ClsMenu extends JMenuItem implements ActionListener {
JTextArea output;
JScrollPane scrollPane;
public ClsMenu(String text)
{
super(text);
addActionListener(this);
}
public JMenuBar createMenu()
{
JMenuBar menuBar;
JMenu menuFood,menuDrinks,menuParty;
JMenuItem foodItem;
menuBar=new JMenuBar();
menuFood=new JMenu("Food");
foodItem=new JMenuItem("Pizza");
menuFood.add(foodItem);
menuBar.add(menuFood);
return menuBar;
}
public void createGUIandShow()
{
JFrame frame = new JFrame("Restuarant");
frame.setJMenuBar(createMenu());
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("item clicked"+e.getActionCommand());
}
}
在这次通话中,我创建了一个对象
public class ClsMenuDisp {
public static void main(String[] args) {
// TODO Auto-generated method stub
ClsMenu menu=new ClsMenu("testitem");
menu.createGUIandShow();
}
}
答案 0 :(得分:2)
您需要将ActionListener
添加到要添加JMenu
的菜单项中。你正在做的是创建一个具有动作监听器的菜单项。然后使用该菜单项的实例方法创建一个完全不相关的JMenuBar
/ JMenu
/ JMenuItem
,然后将其附加到JFrame
。
答案 1 :(得分:2)
您的ClsMenu
类实现ActionListener
,但实现此类界面并不会自动接收事件。
您应该将ActionListener
添加到您感兴趣的对象中,以便该对象知道它应该在适当的时候警告听众。在您的情况下,您对菜单感兴趣,因此您应该将听众添加到其中。
一些参考链接:
ActionListener
教程答案 2 :(得分:2)