Mon, 21 Aug 2006 17:22:52 +0200
<iaraM.olzsaL@nokia.com>
RE: [Java lista] Re: thread sleep kérdés
Hali!
>állítsd meg a hétfőt és amikor a vasárnap - rossz sóval-
>lejár, lökje tovább a hétfő szálat.
Eleg egy szalat hasznalni. Az actionPerformed-bol mindenkepp
uj szalat kell inditani, kulonben blokkolod az esemeny kezelo
szalat (EventDispatchThread). A GUIt modosito hivasokat viszont
az esemeny kezelo szalbol kell vegrehajtani, ahhoz, hogy
eredmenye is legyen, ezert a setText hivast a
SwingUtilities.invokeAndWait metodusan keresztul kell vegrehajtani.
Valahogy igy:
....
void nextTry() {
t.start();
}
class MyThread extends Thread {
// Mert ha megnezed a sleep leirasat,
// akkor latod, hogy az longot var.
long ms;
MyThread(int ms) {
this.ms = ms;
}
public void run() {
try {
SwingUtilities.invokeAndWait( new Setter( l, "Vasarnap" ) );
sleep(ms);
SwingUtilities.invokeAndWait( new Setter( l, "Hétfő") );
System.out.println("Hétfő");
} catch (InterruptedException e) {}
}
}
private static class Setter implements Runnable {
private String text;
private JLabel label;
public Setter( JLabel label, String text ) {
this.label = label;
this.text = text;
}
public void run() {
label.setText( text );
}
}
Kulon Setter osztaly helyett persze hasznalhatod a
rovidebb format is:
SingUtilities.invokeAndWait( new Runnable() {
public void run() {
l.setText( "Valami" );
}
});
Ba'ly,
Atleta