У меня есть фрейм, и я хочу, чтобы когда пользователь закрыл его, запросил сохранение документа. Но если они отменяются, фрейм не должен закрываться.
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 ().
На самом деле у меня есть грязное решение, но я хотел бы посмотреть, есть ли какие-нибудь более чистые.
Ура