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