Como um Swing WindowListener pode vetar o fechamento do JFrame
Eu tenho uma moldura e quero avisar quando o usuário a fechar para salvar o documento. Mas se eles cancelarem, o quadro não deve fechar.
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();
}
}
O FileState verifica se o documento está sujo. Se não for, não faz nada e retorna verdadeiro. Se estiver sujo, ele pergunta ao usuário se ele deseja salvar (SIM / NÃO / CANCELAR). Se o usuário cancelar neste momento, deve abortar a janelaClosing.
Todas as sugestões que eu vi na rede envolvem a saída explícita no método windowClosing, substituindo assim o uso de JFrame.setDefaultCloseOperation () e duplicando o código em JFrame.processWindowEvent ().
Na verdade, tenho uma solução suja, mas gostaria de ver se há alguma mais limpa.
Felicidades