Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Java, Thread.sleep()

Dobrý den,

prosím vás, co se zhruba stane když v Jave zavolám Thread.sleep(1000)?

Mám jednoduchý program, který vytvoří okno a v něm jedno tlačítko. Plán byl takový, že při stisknutí tlačítka se změní jeho obrázek, pak se vteřinu počká a opět se změní jeho obrázek.
Ale program se chová se tak, že při stisknutí tlačítka se vteřinu čeká a pak se na tlačíko nastaví až ten druhý obrázek.

public void actionPerformed(ActionEvent e) {
    tlacitko.setIcon(img2);

    try {
      Thread.sleep(1000);
    }
    catch (Exception ee) {
      System.out.format("Vzbudilo nas to brzo%n");
    }

    tlacitko.setIcon(img1);

  }

Jak tedy docílit toho, aby se tlačítko změnilo, pak program počkal a znovu se měnilo. Prostě aby tu změnu postřehlo lidské oko.

Předem díky za pomoc.

Předmět Autor Datum
public void actionPerformed(ActionEvent e) a proč to cpeš sem, to musí být nový thread, to že napíš…
AZOR 01.05.2013 14:19
AZOR
Pomocí čeho tedy můžu program na chvilku pozastavit?
JanH 01.05.2013 14:21
JanH
zkoušel jsem: long t0, t1; t0 = System.currentTimeMillis(); do { t1 = System.currentTimeMillis(); }…
JanH 01.05.2013 14:22
JanH
je to velice VELICE velice (až na to, že je to změna obrázku ne posun obrázku) tomu co jsme tu řešil…
AZOR 01.05.2013 14:38
AZOR
A jaká je tedy podmínka, že to musí běžet v novém vlákně? Vždyť pokud chce pozastavit aktuální činno…
freez2 01.05.2013 15:34
freez2
Pokud zastaví jediné vlákno programu, tak zastaví i mj. překreslování jeho obrazovky a reakce na uži…
Wikan 01.05.2013 15:36
Wikan
Tak o to jde ne? Aby to na chvíli pozastavil a pak se vlákno opět spustilo... Nebo nerozumím dotazu.
freez2 01.05.2013 15:42
freez2
On chce, aby se změnil obrázek, aplikace jela dál a za chvíli se ten obrázek změnil znovu.
Wikan 01.05.2013 15:46
Wikan
Tak to chápu dobře, ale pořád nerozumím proč tam dávat druhé vlákno, když stačí jednoduše pozastavit…
freez2 01.05.2013 15:51
freez2
Díky, funguje. poslední
JanH 01.05.2013 16:13
JanH

Zpět do poradny Odpovědět na původní otázku Nahoru