Wie schließe ich einen JDialog und lasse die Window Event Listener benachrichtigt werden?
Gibt es eine Möglichkeit das schließen eines JDialog über den code, so dass das Fenster Ereignis-Listener wird noch benachrichtigt werden? Ich habe versucht nur die Einstellung visible auf false und Entsorgung, aber weder scheinen, es zu tun.
InformationsquelleAutor der Frage Jeff Storey | 2009-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schließen eines Fensters (mit
dispose()
) und versteckt es (mitsetVisible(false)
) sind verschiedene Operationen, und produzieren verschiedene Ereignisse -- und schließen es aus das Betriebssystem ist noch ein weiterer Betrieb, der produziert noch ein anderes Ereignis.Alle drei produzieren
windowDeactivated
sagen Sie das Fenster den Fokus verloren, aberdispose()
dann produzierenwindowClosed
, beim schließen vom Betriebssystem ersten produzierenwindowClosing
. Wenn Sie möchten, behandeln beide die gleiche Weise können Sie die Fenster entsorgt werden, wenn Sie geschlossen:Im Allgemeinen
setVisible(false)
bedeutet, dass Sie vielleicht wollen, um das Fenster wieder zu, damit es nicht zu veröffentlichen window-Ereignisse (abgesehen vonwindowDeactivated
). Wenn Sie wollen, um zu erkennen, das ausblenden eines Fensters, müssen Sie eineComponentListener
;Beachten Sie aber, dass diese ziemlich viel nur für explizite
setVisible()
Anrufe. Wenn Sie brauchen, um zu erkennen, versteckt sich mehr im Allgemeinen, Sie können eineHierarchyListener
, aber es ist wahrscheinlich mehr ärger als es Wert ist.Beachten Sie, dass, wenn Sie über ein Fenster erhalten Sie ein paar
HierarchyEvent
s, zuerst zu verstecken und dann zur Nichtigkeit, aber wenn Sie es verstecken, mitsetVisible()
es ist immer noch gültig, so dass Sie nicht bekommen, die Ungültigkeitserklärung.InformationsquelleAutor der Antwort David Moles
Ich nicht zu haben scheinen dein problem. Wenn ich den code unten windowDeactivated() heißt entweder setVisible-Methode( false ) oder dispose() und windowClosed() ist auch als dispose().
ClosingDialog.java:
InformationsquelleAutor der Antwort Joseph Gordon
Versand ein windowClosing-event zum Fenster. Überprüfen Sie heraus die ExitAction Beispiel aus der Schließen einer Anwendung Eintrag.
InformationsquelleAutor der Antwort camickr
Ungetestete Vorschlag:
Haben Sie versucht, getWindowListeners() und dann Durchlaufen rund um das Feuer windowClosed() um jede der WindowListeners?
EDIT: der Vorschlag ist falsch. Halten Sie es für die Nachwelt.
Ich fürchte aufrufenden dialog.dispose() funktioniert gut für mich in meinem einfachen Beispiel.
InformationsquelleAutor der Antwort Grundlefleck
Wollte ich das Feuer ein
windowClosing
Ereignis aus der code (so wie wenn der Benutzer auf die X), da habe ich extra schließen-Schaltfläche in der JDialog und wollen das gleiche WindowListener (die ich umgesetzt in einemWindowAdapter
) werden ausgeführt, wenn das X geklickt wird, und wenn die Schaltfläche geklickt wird. Läuftdispose()
nur feuertwindowClosed
, nichtwindowClosing
, und ich soll eine Nachricht erscheinen vor das Fenster wird geschlossen, für die Bestätigung. Ich auch nicht geschafft, FeuerwindowClosing
über JDialog MethodeprocessWindowEvent
da es geschützt ist.Hier ist, wie ich es geschafft habe, obwohl:
Hoffe, dass jemand hilft.
InformationsquelleAutor der Antwort