Home
/
JavaForum
/
Swing + AWT
Infos
|
Features
|
Gold-Edition
|
Kundenservice
java
Übersicht
Forum
-
Beginner
-
Java allgemein
-
JDBC
-
JNI
-
Networking
-
Online-Ressourcen
-
Swing + AWT
-
XML
-
Meckerecke
Mitglieder
LOGIN
User oder E-Mail
Passwort
·
Passwort vergessen
·
Kostenlos anmelden
Information
Demo
Features
Im Vergleich
Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
Kundenservice
Impressum
Datenschutz
AGB
Status
4.092 User online
0 User eingeloggt
Beiträge
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
Antworten
Neuer Beitrag
Gesamtdarstellung
Detaildarstellung
Einzeldarstellung
Threaddarstellung
Beitrag 497 von 1460 (34%)
Autor
Manfred Crumbach
Datum
08.01.02, 21:17
Betreff
Re: Anzeige funktioniert in Swing nicht
Hi,
das Problem liegt darin, dass Swing eben Single-Threaded ist. D.h. Swing läuft immer in diesem einen Thread und kann auch nur aus diesem heraus geändert werden.
Konkret heisst das:
Ihr reagiert auf ein Benutzer-Ereignis. Damit läuft eure Aktion auch im Swing-Thread. Solange dieser Thread etwas tut, kann auch kein Update der Oberfläch e erfolgen. Darum seht ihr den Progressbar nur zu Beginn und am Ende - aber ohne Änderung zwischendrin.
Aus diesem Grund hilft es auch nicht, die Farbänderung in einen eigenen Thread zu legen. Diese möchte ja ebenfalls die Swing-Komponente ändern - und muss damit auch im Swing-Thread laufen.
Und wie löst man das nun? Wenn die Aktion angestossen wird (bspw. durch den User mittels Button), so ist man also aktuell im Swing-Thread zugange. Die eigentliche Arbeit muss dann in einem neuen Thread erledigt werden (Arbeiter). Wenn dieser Arbeiter eine Rückmeldung in der Benutzeroberfläche durchführen will, so erstellt er ein
Runnable
-Objekt, das genau diese Aktion durchführt. Mittels
Swing.invokeAndWait(guiRunner)
kann dann diese Aktion im Swing-Thread ausgeführt werden - sicher und vor allem sichtbar!
Viel ausführlicher ist das bei Sun in der Swing-Connection erklärt:
"Using a Swing Worker Thread"
http://java.sun.com/products/jfc/tsc/articles/threads/threads2.html
"Threads and Swing"
http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html
HTH,
Manfred
Diskussionsverlauf:
Anzeige funktioniert in Swing nicht
Re: Anzeige funktioniert in Swing nicht
Re: Anzeige funktioniert in Swing nicht
Re: Anzeige funktioniert in Swing nicht
Re: Anzeige funktioniert in Swing nicht
Auf diesen Beitrag antworten
Neuen Beitrag verfassen
Impressum
·
Datenschutz
·
AGB
·
Infos
·
Presse
Ein modernes Forum:
teamturn.com