Buttontexte langsam nacheinander erscheinen lassen

Status
Nicht offen für weitere Antworten.
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).

Code:
...
 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();
...


Code:
 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
 
S

SlaterB

Gast
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
 
Hallo,

ich nehme an so wäre es richtig:

Code:
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

Bekanntes Mitglied
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.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben