Eigene Dialog Klasse - wie die Ausführung beim Anzeigen anhalten?

DarthShader

Erfahrenes Mitglied
Nabend,

ich würde gerne meinen eigenen, modalen Dialog implementieren. Das klappt auch soweit (abgeleitet von JDialog, modal-flag auf ModalityType.APPLICATION_MODAL gesetzt). Nun komme ich zu der Frage, wie ich von dem Dialog eine Rückgabe/Ergebnis bekomme.

Schaut man sich die JOptionPane methoden an, z.B. showXXXDialog, so geben diese ja einen Wert zurück. Entscheident ist, dass die Ausführung des Programmes an der Stelle geblockt wird und erst weiter gemacht wird, wenn der Dialog geschlossen wurde.

Doch wie setzt man soetwas um? Schaut man in den Sourcecode für showXXXDialog, so kann man sehen, dass letztendlich die dialog.show() Methode verwendet wird. Diese blockiert die Ausführung (laut Dokumentation) bis der Dialog wieder geschlossen wird. Gleichzeitig kümmert sich das Toolkit darum, dass ein neuer Pump Event Thread aufgemacht wird, damit die Event Verarbeitung noch weiter geht, obwohl man den Dialog im Event Dispatching Thread aufgemacht hat.

Nun ist die .show() Methode aber als "deprecated" markiert. Soll ich diese dennoch verwenden, weil es die JOptionPane Klasse intern auch tut? Wie könnte ich sonst den Effekt erzielen, dass die Ausführung bis zum Schließen des Dialoges angehalten wird?


Danke für Eure Hilfe!
 
Hallo,

inzwischen habe ich es selbst gelöst - hier kurz die Beschreibung, falls es jemanden interessiert:

Tatsächlich soll man ja setVisible statt show() verwenden. Ich hatte bisher immer die Doku zu window.setVisible( bool ) gelesen, sodass dort nichts vom Programmblockieren stand. Ein Blick in die Doku zu Dialog.setVisible(...) zeigt aber genau das verhalten, wie es auch die show() Methode hat.

Nun brauche ich setVisible() nur überschreiben oder mir eine eigene showXXX Methode machen, die setVisible nutzt, und alles funktioniert.
 
Zurück