Methode soll GUI aktualisieren

christian4683

Grünschnabel
Hallo liebe Leute,

ich entwickle eine SWT Anwendung und ich habe folgendes Problem mit der Aktualisierung der Gui-Darstellung.

In der Klasse SwtGUI, in der das SWT Interface läuft, befindet sich eine Methode refreshVisualisation(), die Werte aus einem Klassenobjekt Data ausließt. Anhand dieser Werte werden Änderungen an der GUI vorgenommen, zB. Setzten der Hintergrundfarbe...

Wird nun auf einen Butten in der GUI geklickt, wird eine Methode nextforall() in der Klasse Controll aufgerufen.
Diese Methode enthällt eine Schleife folgenden Inhalts:
verändern das Dataobject,
aufrufen der refreshVisualisation in der SwtGUI auf und
sleep(1000)

Hier das Problem: Die GUI wird nicht verändert! Die Variablen werden korrekt gesetzt, die methoden ausgeführt, aber man SIEHT NICHTS! Erst nachdem alle Anweisungen incl. sleep durchlaufen wurden und die Methode beendet ist werden die Änderungen sichtbar.
Gewollt ist aber, dass auch die zwischenschritte zu sehen sind (durch das sleeep eigentlich programmiert).

Kann mir jemand einen Tip geben, wie ich die GUI auch während dem ausführen der Schleife mit dem sleep - Befehl aktualisieren kann?

Schonmal vielen Dank im Vorraus - Christian
 
Hallo!

Du schläfst wahrscheinlich im GUI Thread (Main Thread), dadurch kann in der Zeit die GUI natürlich keine Events mehr verarbeiten und sich somit auch nicht aktualisieren...

Verlagere langlaufende Aktionen in einen separaten Thread und führe Veränderungen an der GUI (Widgets) über:
Java:
        display.asyncExec(new Runnable(){
            public void run() {
                //...
            }
        });
        
        //Bzw.
        display.syncExec(new Runnable(){
            public void run() {
                
            }
        });
aus.

Gruß Tom
 
Zurück