2011-05-21 85 views

回答

30

也許這一個,但張貼霍華德說讀教程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 == 0) { 
      System.exit(0); 
     } 
    } 
}; 
frame.addWindowListener(exitListener); 
4

您可以將WindowListener添加到您的相框(請參閱,例如here)。

8

您可以添加一個window listener的框架:

frame.addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent evt) { 
    onExit(); 
    } 
    }); 

... 
public void onExit() { 
    System.err.println("Exit"); 
    System.exit(0); 
} 
26

所有上述的一些/其他選項建議是正確的,因爲你需要使用WindowListener。

但是所有的答案也是不完整的,因爲它們忘了提,你可能還需要添加:

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
frame.addWindowListener(...); 

這將使你的代碼,以窗關閉過程窗口的完全控制會除非您告訴它(通常通過在框架上使用dispose()方法),否則不會自動關閉。這允許您提示用戶確認是否關閉窗口。

Closing an Application有一個簡單的API,允許您創建一個簡單的Action,當窗口關閉時執行。它爲您管理關閉操作和窗口監聽器代碼。