Gibt es einen eleganten Weg zu machen JTable Bearbeitung beenden, wenn der Benutzer die Anwendung schließt Fenster?
Ich versuche, herauszufinden, einen eleganten Weg zu machen JTable stop-Zelle Bearbeiten (cancel es tatsächlich), wenn der Benutzer schließt das Hauptfenster der Anwendung. Ich weiß, so etwas kann getan werden, mithilfe der WindowAdapter aber damit das richtig funktioniert, brauche ich eine Referenz auf das Fenster zu. Problem ist, dass ich manchmal nicht haben.
- Was ist mit SwingUtilities.getWindowAncestor?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Abrupt beenden kann müssen behandelt werden, auf mehreren Ebenen.
Vorausgesetzt, dass der Benutzer muss navigieren aus der Tabelle, klicken Sie auf Exit Steuern, sollten Sie das gewünschte Ergebnis erhalten, indem Sie der Tabelle
"terminateEditOnFocusLost"
Eigenschaft.Wenn Sie zum resort zu einem
WindowListener
oder ähnliches, können Sie die Bearbeitung beenden, die explizit so gezeigt hier.Weil der host besitzt die Rahmen-Dekorationen, einige Plattformen erfordern eine spezielle Handhabung, um die abzufangen, die enge Kontrolle, wie besprochen hier.
Preferences
macht eine best-effort zu bestehen aktualisierten Werte.So weit, das ist die Lösung, ich bin sehr zufrieden mit:
Alle meine JTable-Objekten installieren, die sich als HierarchyListener(s) mit der folgenden Methode, mit der das HierarchyEvent:
Bei dem Projekt arbeite ich an, das Abbrechen der Bearbeitung, wenn die Anwendung Fenster schließt, ist von entscheidender Bedeutung, denn es sendet die Mitteilung, dass der Datensatz nicht mehr in den bearbeitungszustand...
Mithilfe Hierarchie Zuhörer ist auch von entscheidender Bedeutung, da meine JTable-Objekten verschieben von andockbare zu andockbare (wir nutzen die hervorragende Docking-Rahmen hier) und können in verschiedenen Fenstern in unterschiedlichen Zeiten.
Quit
- handler auf Mac OS X.