2011-10-26 5 views
2

これは "ベストプラクティス"タイプの質問です。Java Desktop Applicationを閉じるときにタスクを実行する方法を教えてください。

  1. はシャットダウンフックを追加した容器にWindowListenerを追加し、windowClosingイベント
  2. をオーバーライドする(すなわちRuntime.addShutdownHook:私の知る限りの二つのアプローチ(そしておそらく詳細..)JVMシャットダウンする前にタスクを実行するために必要とする場合があります)

Javaデスクトップアプリケーションの場合、どのアプローチが「好ましい」方法ですか? 「好ましい」方法はありますか?

+0

私の質問あなたが本当に知りたいことは何ですか、v奇妙な質問 – mKorbel

答えて

1

ないのベストプラクティスではなく、好ましい方法、唯一の現在のJVMインスタンスを閉じて、非常にシンプルにするために、

1)Top-LevelContainer#setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

2)WindowListener

 WindowListener exitListener = new WindowAdapter() { 

     @Override 
     public void windowClosing(WindowEvent e) { 
      int confirm = JOptionPane.showOptionDialog(null, 
        "Are You Sure to Close Application?", "Exit Confirmation", 
        JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, 
        null, null, null); 
      if (confirm == JOptionPane.YES_OPTION) { 
       Top-LevelContainer#setVisible(false); 
       // clean-up everything 

       // on error display JOptionPane with error mgs but from 
       // another JVM instance, e.g.jar file, see add 3.) 
       System.exit(1); //in some cases not works System.exit(0); 
      } 
    } 

3を追加)hereはのために休みです別のJVMインスタンスからエラーメッセージを表示する方法

+0

マジックナンバーを使用しないでください! 0はYesまたはNoを意味しますか? – camickr

+0

@camickr私の間違った習慣の一つ – mKorbel

関連する問題