【发布时间】:2011-04-16 04:24:12
【问题描述】:
我有一个框架,想在用户关闭它时提示保存文档。但如果他们取消,框架不应关闭。
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。如果它脏了,它会询问用户是否要保存(是/否/取消)。如果用户此时取消,它应该中止 windowClosing。
我在网上看到的所有建议都涉及显式退出windowClosing方法,从而覆盖JFrame.setDefaultCloseOperation()的使用,并复制JFrame.processWindowEvent()中的代码。
我实际上有一个肮脏的解决方案,但想看看是否有更清洁的解决方案。
干杯
【问题讨论】: