2012-03-23 1 views
1

Должен ли я работать с ActionListener или AbstractAction?Как добавить JMenuItem, который закрывает мою Java-программу?

EDITED НА ОСНОВЕ ОТВЕТЫ

Таким образом, лучший способ это лучший способ сделать это?

Action closeaction = new AbstractAction("Afsluiten"){ 

     @Override 
     public void actionPerformed(ActionEvent ae) { 
      System.exit(1); 
     } 

    }; 
    menuItem = new JMenuItem(closeaction); 
+1

* «Должен ли я ..» * Должен? Это странная фраза для общего способа сделать это. –

+0

Общее правило состоит в том, чтобы _allways_ перейти к самой высокой абстракции. Здесь это правило переводит на _allways_ использование Action. (так что это ясно для вашего комментария, @SirTroll :-) – kleopatra

+0

@ kleopatra, так что это лучший способ сделать это? –

ответ

2

Как @kleopatra комментариев Action является предпочтительной абстракцией, и AbstractAction является правильным базовым классом. В вашем обработчике ненулевой статус означает условие ошибки. В качестве альтернативы рассмотрим отправку события WINDOW_CLOSING, как показано here за JDialog.

Приложение: Событие WINDOW_CLOSING удобно, если вашему приложению необходимо предпринять какие-либо действия перед завершением. Добавьте WindowListener к example, чтобы увидеть эффект:

this.addWindowListener(new WindowAdapter() { 

    @Override 
    public void windowClosing(WindowEvent e) { 
     System.out.println(e); 
    } 
}); 
+0

Итак, System.exit (1) не является хорошим способом? Мне нужно использовать WindowEvent.WINDOW_CLOSING? –

+0

Ну, используйте 'System.exit (0)' для нормального завершения; это просто довольно круто. Еще выше. – trashgod

+0

Спасибо всем –

 Смежные вопросы

  • Нет связанных вопросов^_^