2011-01-04 2 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

Я думаю, что это может быть сделано путем реализации Runnable класса. Затем это называется позже:

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. спасибо, hsmit. – Bakhtiyor

 Смежные вопросы

  • Нет связанных вопросов^_^