我已经编写了在JMenuItem上执行单击事件的代码,但在调试时不会触发。(我知道我不应该在这个论坛上问这些问题,但我是这个论坛的新手)
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();
}
}发布于 2012-01-14 03:26:58
您需要将ActionListener添加到要添加JMenu的菜单项中。您要做的是创建一个具有操作侦听器的菜单项。然后使用该菜单项的实例方法来创建一个完全不相关的JMenuBar/JMenu/JMenuItem,然后将其附加到该JFrame。
发布于 2012-01-14 06:21:27
您的ClsMenu类实现了ActionListener,但并不是通过实现这样的接口,您才能自动接收事件。
您应该将ActionListener添加到您感兴趣的对象中,以便该对象知道它应该在适当的时间警告侦听器。在您的情况下,您对菜单感兴趣,所以您应该将侦听器添加到菜单中。
一些参考链接:
在添加Swing tutorial about menus
发布于 2012-01-14 06:25:31
我正在写一些代码,这些代码可能会对你有用,例如:链接here。
还有一个很好的教程here,这是我编写代码的基础。
https://stackoverflow.com/questions/8855842
复制相似问题