Ich baue einen Texteditor und ich weiß nicht, wie man mit einem Listener auf Swing-Exit-Taste, die automatisch erstellt wird, umzugehen. Ich möchte Dialoge verwenden, wenn der Benutzer die Datei nicht speichert, zum Beispiel die Exit-Taste drücken.Handling Exit-Taste, die automatisch erstellt wird?
Antwort
Vorausgesetzt, dass Sie einen Griff an Ihrem Fenster haben, vorausgesetzt, es ist ein Window
Gegenstand (zB JFrame
oder andere Art von Fenster), können Sie hören zu WindowEvent
Ereignisse. Hier ist ein Beispiel mit windowClosed
, Sie können es durch windowClosing
ersetzen, wenn Sie es zuvor abfangen müssen.
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
// do something here
}
});
Go schrittweise:
- Deklarieren Sie eine boolean Variable
saved
und setzen Sie den Standardwert false. - Wenn der Benutzer die Datei speichert, ändern Sie sie in "true"
- Wenn die Exit-Schaltfläche gedrückt wird, überprüfen Sie die Variable.
- Wenn
true
, beenden Sie andernfalls den Benutzer zum Speichern der Datei.
So, endlich diese Code-Schnipsel wie folgt aussieht:
public boolean saved = false;
saveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saved = true;
//Code to save file
}
});
exitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(saved)
System.exit(0);
else {
//Code to prompt user to save file
}
}
});
Ich kann Hörer nicht hinzufügen, um die Schaltfläche zu beenden, weil diese Schaltfläche automatisch erstellt – thenewproblem
@thenewproblem alle wichtigen Informationen zu der Frage hinzufügen. Nicht in Kommentaren. Was bedeutet es automatisch erstellt? Wenn es einen Listener hat - editiere ihn. Wenn dies nicht der Fall ist und Sie keinen hinzufügen können, können Sie ihn nicht verwenden. – c0der
final JFrame f = new JFrame("Good Location & Size");
// make sure the exit operation is correct.
f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
// pop the dialog here, and if the user agrees..
System.exit(0);
}
});
Wie in dieser answer to Best practice for setting JFrame locations gesehen, die vor dem Verlassen der Rahmenposition & Größe serialisiert.
- 1. Wird die Standard-ListView-Gruppe nicht automatisch erstellt?
- 2. ASP.NET erstellt nicht automatisch
- 3. Erstellt Hibernate automatisch Index?
- 4. Python-Falcon-Handling-Sitzung
- 5. Handling DisambiguierungError?
- 6. Signed APK wird automatisch erstellt, wenn das Projekt
- 7. IntelliJ erstellt automatisch Artefakte, wenn der Code geändert wird
- 8. Spring MVC .jsp wird nicht automatisch von ViewResolver erstellt
- 9. Wie wird in Firebase ein automatisch inkrementierter Schlüssel erstellt?
- 10. Spark-Kontext wird nicht automatisch in Scala erstellt Shell Funken
- 11. Hibernate erstellt keine Tabellen automatisch
- 12. Gibt es eine Möglichkeit, die Standard-ID-Spalte zu ändern, die automatisch erstellt wird?
- 13. Wie wird die Delegataufrufliste erstellt?
- 14. handling lite apps
- 15. Exception Handling
- 16. Werden Mongodb-Backups automatisch erstellt?
- 17. Wie erstellt man App Store Links, die iTunes automatisch starten?
- 18. Laravel Relationen/Subskriptions-Handling
- 19. Android Key Handling (Framework)
- 20. Ajax Redirection Handling
- 21. Jeditable Response-Handling gibt
- 22. MVVM Exception Handling
- 23. Wie wird die JBoss-Bereitstellung automatisch getestet?
- 24. Warum wird die serialVersionUID nicht automatisch generiert?
- 25. Wie wird die Versionsnummer automatisch abgerufen?
- 26. Wird die Verbindung von FirebaseDatabase automatisch verwaltet?
- 27. Wie wird die Diashow automatisch abgespielt?
- 28. Wie wird die Spalte automatisch geteilt?
- 29. Wie die Seitenleiste automatisch gedehnt wird
- 30. Java Exception Handling Concept
Willkommen bei SO. Was bedeutet es automatisch erstellt? Durch den GUI-Builder? Verwenden Sie also den GUI-Builder, um einen Listener hinzuzufügen. Wenn es einen Listener hat - editiere ihn. Wenn dies nicht der Fall ist und Sie keinen hinzufügen können, können Sie ihn nicht verwenden. – c0der
Vielleicht bedeutet er die Fensterdekorationen von Windows, Mac OS oder welches Betriebssystem auch? –
Es ist nicht klar, welche Art von Exit-Button du meinst. Sie sollten einen Screenshot hinzufügen, der es zeigt. –