odswieżanie zegara

0

mam

package app;
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;


public class zegar extends MIDlet{
  private Plotno plotno;
    private Display ekran;

  public zegar(){
  }

  public void startApp(){

    ekran = Display.getDisplay(this);
        plotno = new Plotno();
        ekran.setCurrent(plotno);
  }

  public void pauseApp(){}

  public void destroyApp(boolean uncond){}

}
class Plotno extends Canvas{
  private Date d;
  private Calendar c = Calendar.getInstance();
  private String time;
    private Graphics g;
    Plotno(){
    setFullScreenMode(true);
    }

    protected void paint(Graphics g) {
        g.setColor(0,0,0);
        g.fillRect(0,0,400,400);
     d = new Date();
     c.setTime(d);
     time = c.get(Calendar.HOUR_OF_DAY) + ":" +c.get(Calendar.MINUTE)
               + ":" + c.get(Calendar.SECOND);
     g.setColor(255,255,255);
     g.drawString(time,0,0,0);
}
}

tylko jak to zapetlic, zeby godzina wyswietlana na ekranie byla ciagle aktualna

0

Generalna zasada:
odpalasz timer z odpowiednim interwałem czasowym, a na tick timera wykonujesz co chcesz, w twoim przypadku odrysowanie (narysowanie) nowego czasu

0

dobra, robie tak:

package app;
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;


public class zegar extends MIDlet{
  private Plotno plotno;
    private Display ekran;

  public zegar(){
  }

  public void startApp(){

    ekran = Display.getDisplay(this);
        plotno = new Plotno();
        ekran.setCurrent(plotno);
  }

  public void pauseApp(){}

  public void destroyApp(boolean uncond){}

}
class Plotno extends Canvas implements Runnable{
  private Date d;
  private Calendar c = Calendar.getInstance();
  private String time;
    private Graphics g;
    Plotno(){
    setFullScreenMode(true);
    }

    protected void paint(Graphics g) {
        g.setColor(0,0,0);
        g.fillRect(0,0,400,400);
     g.setColor(255,255,255);
     g.drawString(time,0,0,0);
}

    public void run() {
        while(true){
             d = new Date();
             c.setTime(d);
             time = c.get(Calendar.HOUR_OF_DAY) + ":" +c.get(Calendar.MINUTE)
               + ":" + c.get(Calendar.SECOND);
            repaint();
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
        }
    }
}

pokazuje sie czarny ekran i nie rusza, co zle?

edit: problem rozwiazany, dla potomnych pokaze co zrobilem:

package app;
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;


public class zegar extends MIDlet{
  private Plotno plotno;
    private Display ekran;

  public zegar(){
  }

  public void startApp(){

    ekran = Display.getDisplay(this);
        plotno = new Plotno();
        ekran.setCurrent(plotno);
  }

  public void pauseApp(){}

  public void destroyApp(boolean uncond){}

}
class Plotno extends Canvas{
  private Date d;
  private Calendar c = Calendar.getInstance();
  private String time;
    private Graphics g;
    private Timer tm;
    private TestTimerTask tt;
    Plotno(){
    setFullScreenMode(true);
    tm = new Timer();
    tt = new TestTimerTask();
    tm.schedule(tt,5000,1000);
    }

    protected void paint(Graphics g) {
        g.setColor(0,0,0);
        g.fillRect(0,0,400,400);
     g.setColor(255,255,255);
     g.drawString(time,0,0,0);
}

    private class TestTimerTask extends TimerTask
  {
    public final void run()
    {
             d = new Date();
             c.setTime(d);
             time = c.get(Calendar.HOUR_OF_DAY) + ":" +c.get(Calendar.MINUTE)
               + ":" + c.get(Calendar.SECOND);
                
            repaint();

        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1