Как показать цифровые часы на форме в Java ME - PullRequest
1 голос
/ 04 января 2011

В J2ME я создал форму со StringItem, которая отображает текущее время. Однако я хочу, чтобы этот StringItem обновлялся каждую минуту. Сначала я попробовал Thread.sleep (60000), но затем все приложение ждет. Я думаю, мне нужно создать новую тему? Должен ли я сделать пользовательскую форму, которая расширяет класс Thread? Это возможно в J2ME?

Мой класс без реализации Thread:


  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 Ответ

1 голос
/ 04 января 2011

Я думаю, что это можно сделать путем реализации класса 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();
            }
        }

    }
}

...