# Buttontexte langsam nacheinander erscheinen lassen



## buecherschrank (28. Jun 2008)

Hallo zusammen,

ich programmiere einen Vokabeltester in einem Frame und möchte auf eine angezeigte englische Vokabel die zufällgen deutschen Wörter in sechs Buttons nur langsam erscheinen lassen (um die in Ruhe zu lesen und nicht alle auf einmal zu sehen).


```
...
 vokBut1.setText(deuL.get(lll.get(0))+"?");  pausieren();  // alle ca. 1 Sekunde
 vokBut2.setText(deuL.get(lll.get(1))+"?");  pausieren();
 vokBut3.setText(deuL.get(lll.get(2))+"?");  pausieren();
 vokBut4.setText(deuL.get(lll.get(3))+"?");  pausieren();
 vokBut5.setText(deuL.get(lll.get(4))+"?");  pausieren();
 vokBut6.setText(deuL.get(lll.get(5))+"?");  pausieren();
...
```



```
private void pausieren()    {
       try {
            Thread.currentThread().sleep(1000);
        } catch (InterruptedException ex) { ex.printStackTrace();}
    }
```


Was nur dabei geschieht ist folgendes:
Es wird 5 Sekunden gewartet und alle Wörter werden in den Buttons daraufhin "plötzlich" angezeigt.

Wie macht man es richtig? 


Danke Euch für Ratschläge,
bs


----------



## SlaterB (28. Jun 2008)

die ganze Aktion darf nicht im AWT-Thread, also z.B. in einem ActionListener passieren,
solange der arbeitet (oder wartet) ist die GUI blookiert,

das ganze muss in einem separaten Thread ausgeführt werden


----------



## buecherschrank (28. Jun 2008)

Hallo,

ich nehme an so wäre es richtig:


```
private void pausieren(int ms)    {
     Thread th = new Thread();
       try {
            th.sleep(ms);
        } catch (InterruptedException ex) { ex.printStackTrace();}

    }
```

Aber es geht auch so nicht.

bs


----------



## Maeher (28. Jun 2008)

Du musst den gesamten Ablauf aus dem AWT-Thread herausnehmen. Solange etwas darin läuft (oder wartet!) wird die Anzeige nicht aktualisiert.
Das heißt: Vom Listener (AWT-Thread) aus einen neuen Thread starten, der die Abfolge steuert.


----------

