[JAVA] Sleep doet het niet

Pagina: 1
Acties:

  • -Klimaks-
  • Registratie: Maart 2001
  • Laatst online: 12:06
Heb hier een array van tekstvakken die een andere achtergrondkleur moeten krijgen, de bedoeling was dat dit één voor één zou gebeuren. Dus tekstvak1 licht op, ff wachte, tekstvak2 licht op, enz...

Dit is de code waar ik het nu mee probeer
code:
1
2
3
4
5
6
for(int i=0;i<5;i++)
{
  tekstvak[i].setBackground(Color.red);
  try { Thread.sleep(500); } 
  catch(InterruptedException e) {} 
}

Maar wat gebeurt zo, applicatie wacht even en kleurt dan alle vakken in 1 keer. Had dan om te proberen een messagebox toegevoegd in mijn try en dan kleurt die elk vak wel apart als ik op OK klik in die messagebox |:(

edit:

foutje in try weggehaald.
Juist nog wat gezocht kan het aan de combinatie van threads en swings liggen?

In those days spirits were brave, the stakes were high, men were REAL men, women were REAL women, and small furry creatures from Alpha Centauri were REAL small furry creatures from Alpha Centauri.
Zaphod in The Hitchhikers Guide To The Galaxy


  • Xanthus
  • Registratie: Februari 2002
  • Laatst online: 11-07 12:45
Dat try( {} ) klopt niet echt.
En wat is de rest van je code?

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:44
Met setBackground geef je alleen aan welke achtergrondkleur je component moet hebben, de volgende keer dat 'ie getekend wordt. Je zult 'm dus handmatig moeten updaten, met behulp van getGraphics() en update() (of eventueel alleen repaint()).

Zie ook de Sun tutorials over de Java GUI (AWT/Swing).

Verwijderd

Op dinsdag 21 mei 2002 16:08 schreef -Klimaks- het volgende:
Dit is de code waar ik het nu mee probeer
code:
1
2
3
4
5
6
for(int i=0;i<5;i++)
{
  tekstvak[i].setBackground(Color.red);
  try { Thread.sleep(500); } 
  catch(InterruptedException e) {} 
}
Ik ga ervan uit dat je de thread goed gebruikt. Threads zijn erg complex, je zou het beste een Timer kunnen gebruiken. Laat de timer tijdens de pauze doortellen, doordat je met behulp van een boolean constructie, de actie niet laat uitvoeren, totdat de pouze tijd verlopen is.

Verwijderd

Op dinsdag 21 mei 2002 16:44 schreef Soultaker het volgende:
Met setBackground geef je alleen aan welke achtergrondkleur je component moet hebben, de volgende keer dat 'ie getekend wordt. Je zult 'm dus handmatig moeten updaten, met behulp van getGraphics() en update() (of eventueel alleen repaint()).

Zie ook de Sun tutorials over de Java GUI (AWT/Swing).
Ik heb het zonnet nog uitgeprobeerd, het werkt wel alleen met setBackground. Je hoeft niet perse repaint en derglijke te gebruiken.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op dinsdag 21 mei 2002 16:49 schreef graaff01 het volgende:

[..]

Ik ga ervan uit dat je de thread goed gebruikt. Threads zijn erg complex, je zou het beste een Timer kunnen gebruiken. Laat de timer tijdens de pauze doortellen, doordat je met behulp van een boolean constructie, de actie niet laat uitvoeren, totdat de pouze tijd verlopen is.
Waarom dan niet meteen de pauze tijd goed instellen? Dit is alleen handig als er meerdere acties naast elkaar lopen (zoals bij jou het geval was), maar dat is hier niet het geval. Hij hoeft alleen de delay van de timer goed in te stellen en klaar is Klara. Zorg er wel voor dat je de Swing Timer gebruikt omdat deze automatisch zijn events verstuurd op de event dispatching thread.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:35

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op dinsdag 21 mei 2002 16:56 schreef graaff01 het volgende:

[..]

Ik heb het zonnet nog uitgeprobeerd, het werkt wel alleen met setBackground. Je hoeft niet perse repaint en derglijke te gebruiken.
de paint () wordt gescheduled. setBackground roept intern dacht ik ook gewoon repaint () aan, maar het de paint hoeft niet direct op te treden (dwz, de repaint () roept paint () niet direct aan, maar dat gebeurt hoogstwaarschijnlijk in een andere thread op een later tijdstip)

Er is echter ook een repaint () met een timeout (in milliseconden) als parameter. Hij wordt dan binnen die timeout geupdate

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

ik snap niet waarom iedereen zo moeilijk loopt te doen. De timer class is voor dit soort dingen gemaakt.

  • -Klimaks-
  • Registratie: Maart 2001
  • Laatst online: 12:06
ik zal eens kijken naar die Timer class, bedankt iedereen

In those days spirits were brave, the stakes were high, men were REAL men, women were REAL women, and small furry creatures from Alpha Centauri were REAL small furry creatures from Alpha Centauri.
Zaphod in The Hitchhikers Guide To The Galaxy

Pagina: 1