2011-10-26 75 views
2

這是一個「最佳實踐」類型的問題。 AFAIK有兩種方法(可能還有更多的..)需要事先到JVM停止執行任務時:如何確保在關閉Java桌面應用程序後執行任務?

  1. 添加WindowListener到容器和覆蓋windowClosing事件
  2. 添加一個關閉掛鉤(即Runtime.addShutdownHook

對於Java桌面應用程序,哪種方法是「首選」方式?有沒有「首選」的方式?

+0

我的問題你真的想知道什麼,v for v + 1怪異的問題 – 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代表是或否? – camickr

+0

@camickr糾正我的錯誤習慣之一 – mKorbel

相關問題