2009-08-19 14 views
0

Hallo, ich arbeite an einer Java Swing-Anwendung, die eine Suche in einer Datenbank durchführt. Es hat 2 JDialog Boxen, die während der Suche auftauchen.Programmatisch schließen aktuell angezeigte Java Swing-JDialogbox

Die erste sagt dem Benutzer, dass die Suche gestartet wurde und eine OK-Schaltfläche zum Schließen hat. Die zweite teilt dem Benutzer mit, dass die Suche zurückgekehrt ist und wird ebenfalls durch Drücken der OK-Taste geschlossen.

Ich habe einen Weg, die erste JDialog Box programmatisch zu schließen, wenn die Suche zurückkommt, ist es ziemlich offensichtlich, dass die Suche gestartet wurde, als die Suche zurückgekehrt ist.

+0

Haben Sie den Quellcode? Können Sie sehen, wo der Dialog angezeigt wird? Wenn dies der Fall ist, rufen Sie vor dem Anzeigen des zweiten Dialogfelds die "dispose" -Methode beim ersten auf. Genau wie "nos" beantwortet – OscarRyz

+0

Dupliziert (mit weniger Details) hier: http://StackOverflow.com/Questions/1301874 – kdgregory

Antwort

0

Rufen Sie die.dispose() - Methode auf dem JDialog auf.

+0

Danke. Wissen Sie, wie Sie auf das aktuell angezeigte JDialog-Objekt zugreifen können? Das verwendete Framework enthält keinen Verweis auf die von ihm erstellten Dialogobjekte. Vielen Dank. – Dave

+1

Sie sollten einen Verweis darauf behalten, wenn Sie es erstellen. Wahrscheinlich können Sie nur eine für die gesamte Lebensdauer der Anwendung erstellen (es sei denn, Sie benötigen zwei Suchvorgänge gleichzeitig). – DJClayworth

3

Obwohl Abschlussdialog so einfach ist wie Aufruf setVisible(false) auf es, denke ich, dass Ihr Ansatz nicht Benutzer intuitiv ist. Das Anzeigen von zwei Dialogen ist eine schlechte UI-Praxis. Was Sie tun müssen, ist Fortschrittsanimation/-dialog anzuzeigen. Sobald die Suche beendet ist, stoppen Sie die Fortschrittsanimation/den Fortschrittsdialog und zeigen Sie die zurückgegebenen Daten an. Hier sind einige Links zum Thema:

http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html http://developerlife.com/tutorials/?p=248

+0

Die Verwendung eines Fortschrittsdialogs macht den gesamten Anfrage/Antwort-Prozess synchron, da der Benutzer sitzen und den Fortschrittsbalken beobachten muss, bis die Ergebnisse zurückgegeben werden. Mit zwei Dialogen kann der Benutzer andere Dinge tun, während er auf die Ergebnisse wartet. Eine bessere Lösung wäre wahrscheinlich, dass der erste Dialog automatisch nach einem Timeout geschlossen wird (wenn der Benutzer ihn vorher nicht selbst schließt). – DaveJohnston

+0

Der Dialog muss nicht modal sein. – DJClayworth

-1

Schauen Sie sich meine answer auf eine andere ähnliche Frage.

+0

Link funktioniert nicht –

Verwandte Themen