Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Обработка события "выбор пункта меню"


Автор: Reptor 7.4.2008, 10:37
Есть несколько разделов меню. Вот пример одного из них:

Код

menu = new JMenu("Options");
menuBar.add(menu);
menuItem = new JMenuItem("Connection");
menuItem.addActionListener(this);
menu.add(menuItem);


Выбор конкретного раздела я обрабатываю таким образом  menuItem.addActionListener(this);

И соответственно есть 

Код

public void actionPerformed(ActionEvent e) {
      JMenuItem source = (JMenuItem)(e.getSource());
      
      setupWindow = new SetupWindow(frame, source.getText());
         setupWindow.setSize(new Dimension(460,200)); 
         setupWindow.setLocationRelativeTo(null);    
         setupWindow.setResizable(false);
         setupWindow.setModal(true);
         setupWindow.setVisible(true);
     
     }    



Так вот вопрос в том что а если у меня много пунктов меню, а в них ещё и подпункты то неужели надо всё обрабатывать в функции 
Код

public void actionPerformed(ActionEvent e)


Там же тогда будет много if.....elseif. Может можно как то покрасивее сделать выбор "что делать". ??


Автор: Kangaroo 7.4.2008, 10:43
Цитата(Reptor @  7.4.2008,  10:37 Найти цитируемый пост)
Может можно как то покрасивее сделать выбор "что делать". ??

Можно писать обработчики как анонимные классы - на каждую менюшку, свой обработчик.

Автор: Reptor 7.4.2008, 10:59
Kangaroo, а как это?

Автор: Kangaroo 7.4.2008, 11:10
Цитата(Reptor @  7.4.2008,  10:59 Найти цитируемый пост)
Kangaroo, а как это? 

Вот так:
Код

                JMenuItem openItem=new JMenuItem("Open..");
        openItem.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent arg0) {
                                        // код только для менюшки Опен
                    open(); 
            }
            
        });

Автор: math64 7.4.2008, 11:45
Лучше использовать Action:
Код

JMenu menu;
JToolBar toolbar;
Action action = new AbstractAction("Open", openIcon) {
  public void actionPerformed(ActionEvent ae) {
    open(); 
  }
};
menu.add(action); // эквивалентно menu.add(new JMenuItem(action));
toolbar.add(action); // отличается от toolbar.add(new JButton(action)); тем что будет показывать текст только как tooltip

Ток же самый Action можно использовать и для меню, и для панели инструментов(toolbar).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)