carookee - group communication for you
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





· 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
   Antworten     Neuer Beitrag    

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