Как 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 проверяет, является ли документ грязным. Если это не так, он ничего не делает и возвращает истину. Если он грязный, он спрашивает пользователя, хочет ли он сохранить (ДА / НЕТ / ОТМЕНА). Если пользователь отменяет в этот момент, он должен прервать закрытие окна.

Все предложения, которые я видел в сети, включают в себя явный выход из метода windowClosing, таким образом переопределяя использование JFrame.setDefaultCloseOperation () и дублируя код в JFrame.processWindowEvent ().

У меня действительно есть грязное решение, но я хотел бы видеть, есть ли более чистые решения.

ура