Hallo zusammen,
ich möchte den Benutzer meines Programms (falls er das Projekt noch nicht gespeichert hat) beim Beenden fragen, ob das Projekt speichern will. Dieser "Ja-Nein-Abbrechen"-Dialog ist ja von vielen Programmen bekannt. Ja und Nein sorgen für das Speichern bzw. dafür, dass es nicht gespeichert wird, und daraufhin das Programm beendet wird, und abbrechen sollte dafür sorgen, dass nichts passiert. Tut es aber nicht... Statt dessen wird das JFrame (Hauptfenster des Programms) unsichtbar, das Programm aber nicht beendend. Ich hab mal den Code gepostet:
Ich habe den Code so kurz wie möglich gehalten.
Ich hoffe euch kommt eine Idee, denn ich beiß mir schon seit längerem die Zähne an dem Problem aus.
Gruß
der Felix
ich möchte den Benutzer meines Programms (falls er das Projekt noch nicht gespeichert hat) beim Beenden fragen, ob das Projekt speichern will. Dieser "Ja-Nein-Abbrechen"-Dialog ist ja von vielen Programmen bekannt. Ja und Nein sorgen für das Speichern bzw. dafür, dass es nicht gespeichert wird, und daraufhin das Programm beendet wird, und abbrechen sollte dafür sorgen, dass nichts passiert. Tut es aber nicht... Statt dessen wird das JFrame (Hauptfenster des Programms) unsichtbar, das Programm aber nicht beendend. Ich hab mal den Code gepostet:
Code:
/*
* Anwendung schließen
*/
public void close() {
//...
if (this.save() == false) { //tritt ein, wenn das Projekt noch nicht gespeichert ist
if (this.askForSaving()) { //weiter unten...
//einige Einstellungen speichern...
System.exit(0);
}
}
}
private boolean askForSaving() {
if (vocablesystem.getBox1().size() + vocablesystem.getBox2().size()
+ vocablesystem.getBox3().size()
+ vocablesystem.getBox4().size()
+ vocablesystem.getBox5().size() != 0) { //wenn das Projekt nicht leer ist
JOptionPane pane = new JOptionPane(
"Das derzeit geöffnete Projekt wurde nicht gespeichert. Jetzt speichern?",
JOptionPane.QUESTION_MESSAGE,
JOptionPane.YES_NO_CANCEL_OPTION);
int selectedOption = pane
.showConfirmDialog(this,
"Das derzeit geöffnete Projekt wurde nicht gespeichert. Jetzt speichern?");
if (selectedOption == JOptionPane.NO_OPTION) { //nein wurde gewählt -> Programm beenden
return true;
} else if (selectedOption == JOptionPane.YES_OPTION) { //ja wurde gewählt -> Programm beenden
this.setPath(); //speichern-Dialog
if (this.save() == false) { //falls speichern nicht funktioniert erneut speichern-Dialog
return this.askForSaving();
} else {
return true;
}
} else { //abbrechen wurde gewählt -> Programm nicht beenden
return false;
}
} else {
return true;
}
}
Ich habe den Code so kurz wie möglich gehalten.
Ich hoffe euch kommt eine Idee, denn ich beiß mir schon seit längerem die Zähne an dem Problem aus.
Gruß
der Felix