[Java (swing)] setText() en dan pauzeren?

Pagina: 1
Acties:

  • Targeter
  • Registratie: Maart 2000
  • Laatst online: 04-05 19:46
ik kom even niet uit t volgende:

Ik wil in mn java prog een JLabel aanpassen, en daarna 10 seconden wachten. Ik heb daarvoor Thread.sleep() geprobeerd, en (lekker ranzig) een while lus die wacht tot de klok 10 secs verder is. Helaas wordt de setText pas uitgevoerd NA de pauze, waar ik dus niet zoveel aan heb, aangezien het hele scherm daarna leeggegooid wordt.

Wie kan me helpen? Ik heb andere threads gevonden met het probleem, maar kon er niet echt een oplossing uit vinden.

ik heb nu dus dit:
code:
1
2
3
beeldCenter.setText(uitgave);
try{Thread.currentThread().sleep(1000)}catch(Exception e){}
reset();


Het is btw niet erg als de GUI ondertussen hangt.

  • m-m
  • Registratie: Augustus 2001
  • Niet online

m-m

Kan je niet een private class maken die Runnable implementeert, zodat je die 10 seconden kan laten wachten en dan een methode aanroepen in je normale klasse die vervolgens die reset() doet? Beetje erg ranzig, maar ja.

Of anders na die setText het label opnieuw laten painten? beeldCenter.paintAll(beeldCenter.getGraphics());

Verwijderd

zou je dit ook niet kunnen doen dmv een Timer?

Edit: Zoiets als dit:
http://java.sun.com/j2se/...pi/javax/swing/Timer.html

Meer uitleg over die Timer kun je hier vinden (net als een lekker fout voorbeeld :X )
http://java.sun.com/products/jfc/tsc/articles/timer/
//DON'T DO THIS!
while (isCursorBlinking()) {
drawCursor();
for (int i = 0; i < 300000; i++) {
Math.sqrt((double)i); // this should really chew up some time
}
eraseCursor();
for (int i = 0; i < 300000; i++) {
Math.sqrt((double)i); // likewise
}
}
Dr staat ook nog een voorbeeld bij voor dat idee van M-M van de Runnable.

[ Voor 121% gewijzigd door Verwijderd op 26-06-2005 16:45 ]


  • Targeter
  • Registratie: Maart 2000
  • Laatst online: 04-05 19:46
m-m schreef op zondag 26 juni 2005 @ 16:13:
Kan je niet een private class maken die Runnable implementeert, zodat je die 10 seconden kan laten wachten en dan een methode aanroepen in je normale klasse die vervolgens die reset() doet? Beetje erg ranzig, maar ja.

Of anders na die setText het label opnieuw laten painten? beeldCenter.paintAll(beeldCenter.getGraphics());
yay, dat laatste werkt! mijn dank is groot!