JMenuitem - 点击 - 动作 - Java

时间:2012-01-13 19:07:29

标签: java swing action jmenu

我已编写代码在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();
  }
}

3 个答案:

答案 0 :(得分:2)

您需要将ActionListener添加到要添加JMenu的菜单项中。你正在做的是创建一个具有动作监听器的菜单项。然后使用该菜单项的实例方法创建一个完全不相关的JMenuBar / JMenu / JMenuItem,然后将其附加到JFrame

答案 1 :(得分:2)

您的ClsMenu类实现ActionListener,但实现此类界面并不会自动接收事件。

您应该将ActionListener添加到您感兴趣的对象中,以便该对象知道它应该在适当的时候警告听众。在您的情况下,您对菜单感兴趣,因此您应该将听众添加到其中。

一些参考链接:

  1. Swing教程about menus
  2. Observer design pattern,这是您在添加侦听器时使用的内容
  3. How to write an ActionListener教程

答案 2 :(得分:2)

我正在编写一些可能对您有用的代码示例:link here

还有一个很好的教程here,这是我基于我的代码的地方。