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

questionAnswers(4)

yourAnswerToTheQuestion