![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 581
|
Wie kann ich denn das schließen eines Fensters abfangen? Ich möchte nämlich vorher noch kurz den Benutzer fragen ob er wirklich möchte. Auf mein JFrame lauscht folgender Listener: PHP-Code: Allerdings, da es sich bei dem JFrame um das Hauptfenster der Anwendung handelt, möchte ich erst nachfrage ob das ganze Programm beendet wird. Die Abfrage kommt zwar, und er beendet das Programm auch nur wenn ich "Ja" anworte, aber das JFrame macht er auf jeden Fall zu. In der API steht unter WindowAdpapter und der Methode windowClosing: windowClosing Code: public void windowClosing(WindowEvent e)Invoked when a window is in the process of being closed. The close operation can be overridden at this point. Specified by: windowClosing in interface WindowListener Gruß Sparrow |
| | |
| | Nach oben #3 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 581
|
Die Methode closeApp: PHP-Code: Die Methode mit einem ActionListener auf einen Button gelegt funktioniert. Der Fehler scheint zu sein, dass das klicken des kreuzchens der Applikation (also die vom Betriebssystem zur Verfügung gestellte "Schließen-Schaltfläche" *lol*), trotzdem ein setVisible(False) oder dispose() auf das JFrame auslöst. Also der Grund warum ich das haben möchte ist einfach: der Benutzer soll bestätigen, dass er das Programm beenden will. Später kommen dann noch ein paar Aufräummaßnahmen in closeApp dazu. Gruß Sparrow |
| | |
| | Nach oben #4 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.129
|
Du möchtest wahrscheinlich auf dieses Ereignis achten.
__________________ Patrick Gotthardts Weblog. |
| | |
| | Nach oben #5 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.512
|
Hi, wenn Du folgende Zeile einfügst, dann klappt es: PHP-Code: Hier mal mein ganzes Beispiel: PHP-Code: |
| | |
| | Nach oben #7 | |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 581
| Zitat:
Wär ich aber wahrscheinlich nie drauf gekommen Hatte mit damit bisher nur bei InternalFrames zu tun. Kombinieren ist wohl nicht meine Stärke. Dangöööööö Gruß Sparrow your Dr. Watson, not Mr. Holmes | |
| | |
| | Nach oben #8 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.129
|
Oh... das kommt davon, wenn man neben dem Arbeiten noch versucht, schlaue Tipps zu geben. *g* Hab aus irgendwelchen Gründen "windowClosed" gelesen.
__________________ Patrick Gotthardts Weblog. |
| | |
| | Nach oben #9 | ||
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.512
| Zitat:
Ist aber ja auch irgendwie tricky. Naja. Problemchen gelöst ... | ||
| | |
| | Nach oben #10 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.512
|
Jou. Ich muss hier gerade mal etwas rauskramen. Ich habe mir folgende Klasse geschrieben. PHP-Code: Passt irgendwie nicht. Nunja. Ich verwende die Funktionalität momentan hier: PHP-Code: Ich möchte jetzt zusätzlich, wie in diesem Thread auch erfragt, darauf reagieren, wenn das Fenster mittels dem X oben rechts geschlossen wird. Das ist auch eigentlich kein Problem. Ich habe ja selbst die Lösung gepostet, allerdings stellt sich mir hier jetzt gerade eine andere Frage. Ich nutze hier jetzt ja eine anonyme Klasse. Finde ich an dieser Stelle eigentlich recht passend (wenn ich da falsch denke bitte sagen Ich brauche jetzt aber für den Konstruktor der Klasse ConfirmAppClosing das zu schließende Frame. Im ersten Beispiel nutze ich da "this". In der anonymen inneren Klasse geht das aber ja nicht .. Frage: "Wie komme ich denn da jetzt trickreich an das Frame?" Danke Grüße Ben. |
| | |
| | Nach oben #11 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.129
|
Diese "ConfirmAppClosing"-Klasse würde ich wirklich als statische Klasse basteln... Also sowas in der Art von: ConfirmedFrameCloser.maybeCloseFrame(frame); Bzgl. anonymer Klassen und "this" - das wird jetzt echt häßlich - gibt es eine Möglichkeit: Code: public class MyFrame extends JFrame {
public MyFrame() {
// ... das übliche halt
addWindowDingsda(new WindowAdapter() {
public void windowDingsda() {
MyFrame.this.dispose();
}
}
}
}
Eine andere alternative wäre es, eine Referenz auf "this" in einer Variable (ich nenne sie gerne "self") zu speichern.
__________________ Patrick Gotthardts Weblog. |
| | |
| | Nach oben #12 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.512
|
Hallo, super Idee mit dem "self" ... *ploink* Bin ich nicht drauf gekommen. Habe die Klasse bzw. die Methode jetzt mal als static deklariert. Ist eine gute Idee, dann erspare ich mir die Erstellung des Objekts. Jut. Danke Dir. Problem gelöst Grüße Ben. |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Mit JavaScript prüfen, ob Fenster gewisse Breite unterschreitet | Ben | JavaScript und AJAX | 2 | 10.09.2007 13:26 |
| Durchsichtiges fenster | Xean | Desktop-Applikationen und Grafik | 7 | 15.05.2006 15:18 |
| Fenster verschieben - anderes Fenster mit verschieben? | Binary | Allgemeine Java-Programmierung | 2 | 15.08.2005 10:24 |
| NOOB FRAGE: Fenster bei Buttondruck | Muluf | Allgemeine Java-Programmierung | 2 | 21.06.2005 15:06 |
| Neues Fenster öffnen | bacarni | Allgemeine Java-Programmierung | 2 | 10.01.2005 21:27 |