Hi,
ich schreibe eine SW (Swing) und will verhindern, daß der User die Anwendung durch Klicken auf das X in der rechten oberen Ecke das Fenster schließen kann, sondern nur durch die Menü-Einträge oder Buttons.
Wie kann man das machen?
Besten Dank
Winni
Moin
Wie kann man das machen?
100% ausschliessen kann man’s nicht, aber wenn du window-Listener dran hängts kanns du selbst bestimmen was passiert.
Ausserdem:
JFrame.setDefaultCloseOperation(int)
cu
Moin
Wie kann man das machen?
100% ausschliessen kann man’s nicht, aber wenn du
window-Listener dran hängts kanns du selbst bestimmen was
passiert.
Ausserdem:
JFrame.setDefaultCloseOperation(int)
Also ich habe erstmal JFrame.setDefaultCloseOperation(JFrame.DO_NOTHING…) gemacht.
Anscheinend funzt das jetzt.
Besten Dank…
cu
Winni
Hi,
sicher kann man das so machen. Denk aber auch darüber nach was dadurch passiert. Die Bearbeitung von WindowEvents sollte auch das Window durchführen. Wenn du das Event zum Schliessen ignorierst musst du irgendwo anders in deiner Applikation das Verlassen der Anwendung programmieren. Was ist wenn du nach längerer Zeit deine Anwendung noch einmal umschreiben willst. Dann kann es gut sein, dass du nach der Methode suchst, die das Schliessen übernimmt. Denn normalerweise erwartest du das in der JFrame Klasse. Deshalb habe ich folgenden Vorschlag.
public class JFrameTest extends JFrame {
public JFrameTest() {
this.setSize(new Dimension(400, 300));
this.setTitle(„TestFrame“);
}
//Überschrieben
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
// if( document.hasChanged() ) {
// if ( application.askUser() ) {
// application.saveDocument();
// System.exit(0);
// }
// }
}
}
}
Jetzt bleibt die Bearbeitung der Events in der JFrame Klasse.
Deine Buttons können ja dann diese Methode aufrufen.
jframe.processWindowEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
Gruß
René Link
http://www.computer-link.de
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]