Blackberry - Как заставить часы отсчитывать время и отображать на экране - PullRequest
2 голосов
/ 16 декабря 2011

Я делаю заявку на викторину с вопросом и ответом.Я хочу, чтобы часы отсчитывали (Минута + Секунда) и отображали их на экране. Но я не могу как это сделать.Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 2 ]

3 голосов
/ 16 декабря 2011

это одно решение для печати времени мм: сс формат (минуты: секунды)

   public class StartUp extends UiApplication{
        public static void main(String[] args) {
            StartUp start=new StartUp();
            start.enterEventDispatcher();
        }
        public StartUp() {
            pushScreen(new Timerscreen());
        }
    }

          class Timerscreen extends MainScreen
        {
            LabelField time;
            long mille=0;
            Timer timer=null;TimerTask task=null;
            public Timerscreen() {
                mille=1000*60*1;
                time=new LabelField();
                add(time);
                timer=new Timer();

                task=new TimerTask() {

                    public void run() {
                        synchronized (UiApplication.getEventLock()) {

                            if(mille!=0){
                                SimpleDateFormat date=new SimpleDateFormat("mm:ss") ;
                                System.out.println("================="+date.formatLocal(mille)+"====================="+Thread.activeCount());
                                time.setText(date.formatLocal(mille));
                                mille=mille-1000;
                            }else{
time.setText("00:00");
mille=1000*60*1;
                                timer.cancel();
                                UiApplication.getUiApplication().invokeLater(new Runnable() {
                                    public void run() {
                                        Dialog.inform("Time expaired");
                                    }
                                });

                            }
                        }
                    }
                };
                timer.schedule(task,0, 1000);
            }
        }
0 голосов
/ 16 декабря 2011

То же, что и выше, но некоторые изменения:

Первый набор:

int secs = 120; // сколько секунд вы хотите;

public void callTheTimer()
{   
    label=new LabelField("\t");
    add(label);
    timer=new Timer();
    timerTask=new TimerTask() 
    {
        public void run() 
        {
            synchronized (UiApplication.getEventLock()) 
            {
                if(secs!=0)
                {
                    label.setText(""+(secs--)+" secs");                 
                }
                else
                {   
                    timer.cancel();                     
                    UiApplication.getUiApplication().invokeLater(new Runnable() 
                    {
                        public void run() 
                        {
                            label.setText("");
                            Dialog.alert("Times Up");
                            secs=120;                               
                        }           
                    });                     
                }
            }
        }
    };
    timer.schedule(timerTask, 0, 1000);
}

Этого достаточно;

...