JMenuitem - щелчок - действие - Java - PullRequest
1 голос
/ 13 января 2012

Я написал код для выполнения события click на 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();
  }
}

Ответы [ 3 ]

2 голосов
/ 14 января 2012

Ваш класс ClsMenu реализует ActionListener, но не путем реализации такого интерфейса вы будете автоматически получать события.

Вы должны добавить свой ActionListener к интересующему вас объекту,так что этот объект знает, что он должен предупредить слушателя в соответствующее время.В вашем случае вас интересует меню, поэтому вы должны добавить к нему слушателя.

Некоторые ссылки:

  1. Учебник по Swing о меню
  2. Шаблон проектирования Observer , который вы используете при добавлении слушателей
  3. Как написать ActionListener учебник
2 голосов
/ 14 января 2012

Я пишу код, который может быть полезен для вас в качестве примера: ссылка здесь .

Здесь также есть хороший учебник здесь , которыйгде я основал свой код.

2 голосов
/ 13 января 2012

Вам необходимо добавить ActionListener к пунктам меню, которые вы добавляете JMenu.Что вы делаете, это создаете пункт меню, в котором есть слушатель действия.Затем, используя метод экземпляра этого пункта меню, создайте совершенно не связанный JMenuBar / JMenu / JMenuItem, который затем присоединяется к JFrame.

...