Ich habe einen Rahmen, und möchte eine Eingabeaufforderung, wenn der Benutzer es zum Speichern des Dokuments schließt. Aber wenn sie abbrechen, sollte der Rahmen nicht schließen.Wie kann ein Swing WindowListener Veto JFrame schließen
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 schaut, ob das Dokument verschmutzt ist. Wenn es nicht ist, tut es nichts und kehrt wahr zurück. Wenn es schmutzig ist, fragt es den Benutzer, ob er speichern möchte (JA/NEIN/ABBRECHEN). Wenn der Benutzer zu diesem Zeitpunkt abbricht, sollte windowClosing abgebrochen werden.
Alle Vorschläge, die ich im Netz gesehen habe beinhalten explizit in der Methode window Verlassen, wodurch die Verwendung von JFrame.setDefaultCloseOperation() überschreiben, und den Code in JFrame.processWindowEvent Duplizieren().
Ich habe eigentlich eine schmutzige Lösung, aber würde gerne sehen, ob es irgendwelche saubereren gibt.
Prost
möglich Duplikat [Wie kann ich den Abschluss einer Java-Anwendung beenden] (http://stackoverflow.com/questions/8469097/how-can-i-stop-the-closing-of-a- Java-Anwendung) –