我有一個框架,並希望在用戶關閉它以保存文檔時提示。但是,如果他們取消,框架不應該關閉。Swing WindowListener如何否決JFrame關閉
frame.addWindowListener(new SaveOnCloseWindowListener(fileState));
...
public class SaveOnCloseWindowListener extends WindowAdapter {
private final FileState fileState;
public SaveOnCloseWindowListener(FileState fileState) {
this.fileState = fileState;
}
public void windowClosing(WindowEvent e) {
if (!fileState.onQuit())
cancelClose();
}
}
FileState會檢查文檔是否髒。如果不是,它什麼也不做,並返回true。如果髒了,它會詢問用戶是否要保存(YES/NO/CANCEL)。如果用戶在這一點取消,它應該中止windowClosing。
我在網上看到的所有建議都涉及到顯式退出windowClosing方法,因此覆蓋JFrame.setDefaultCloseOperation()的使用,並複製JFrame.processWindowEvent()中的代碼。
我其實有一個骯髒的解決方案,但想看看是否有更清潔的。
乾杯
可能重複[如何停止關閉Java應用程序](http://stackoverflow.com/questions/8469097/how-can-i-stop-the-closing-of-a- java-application) – 2013-03-17 00:16:44