2011-01-04 7 views
1

J2MEでは、現在の時刻を表示するStringItemでフォームを作成しました。しかし、私は毎分このStringItemを更新したい。 まず、Thread.sleep(60000)を試しましたが、アプリケーション全体が待機しています。 私は新しいスレッドを作成する必要があると思いますか? Threadクラスを拡張するカスタムフォームを作成する必要がありますか?それはJ2MEで可能ですか?スレッドの実装せずにJava MEのフォームにデジタル時計を表示する方法

私のクラス:


    import java.util.Calendar; 
    import java.util.Date; 
    import javax.microedition.lcdui.Command; 
    import javax.microedition.lcdui.Form; 
    import javax.microedition.lcdui.StringItem; 

    public class PtcInputForm extends Form{ 
    public Command okCommand; 
    public StringItem clock; 

    public PtcInputForm(String title) { 
     super(title); 
     okCommand= new Command("OK", Command.OK, 9); 
     this.addCommand(okCommand); 
     showClock(); 

    } 
    public void showClock(){ 
     String time = getTime(); 
     clock = new StringItem("time:", time); 
     this.append(clock); 
    } 
    public void refreshClock(){ 
     this.clock.setText(this.getTime()); 
    } 
    private String getTime(){ 
     Calendar c    = Calendar.getInstance(); 
     c.setTime(new Date()); 
     String time    = addZero(c.get(Calendar.HOUR_OF_DAY),2) +":"+ addZero(c.get(Calendar.MINUTE),2)+":"+addZero(c.get(Calendar.SECOND),2); 
     return time; 
    } 
    private static String addZero(int i, int size) { 
     String s = "0000"+i; 
     return s.substring(s.length()-size, s.length()); 


    } 
} 
 

答えて

1

私はそれが実行可能クラスを実装することによって行うことができると思います。これは、後で呼び出されます。

PtcInputForm ptcInputForm = new ptcInputForm("mytitle"); 
Thread clockThread = new Thread(ptcInputForm); 
clockThread.start(); 


    import java.util.Calendar; 
    import java.util.Date; 
    import javax.microedition.lcdui.Command; 
    import javax.microedition.lcdui.Form; 
    import javax.microedition.lcdui.StringItem; 

    public class PtcInputForm extends Form implements Runnable{ 
    public Command okCommand; 
    public StringItem clock; 

    public PtcInputForm(String title) { 
     super(title); 
     okCommand= new Command("OK", Command.OK, 9); 
     this.addCommand(okCommand); 
     showClock(); 

    } 
    public void showClock(){ 
     String time = getTime(); 
     clock = new StringItem("time:", time); 
     this.append(clock); 
    } 
    public void refreshClock(){ 
     this.clock.setText(this.getTime()); 
    } 
    private String getTime(){ 
     Calendar c    = Calendar.getInstance(); 
     c.setTime(new Date()); 
     String time    = addZero(c.get(Calendar.HOUR_OF_DAY),2) +":"+ addZero(c.get(Calendar.MINUTE),2)+":"+addZero(c.get(Calendar.SECOND),2); 
     return time; 
    } 
    private static String addZero(int i, int size) { 
     String s = "0000"+i; 
     return s.substring(s.length()-size, s.length()); 


    } 
    public void run() { 
     while(true){ 
      this.refreshClock(); 
      try { 
       Thread.sleep(60000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 

    } 
} 

+0

非常に素晴らしいexplantion。あなたには感謝します。 – Bakhtiyor

関連する問題