2011-12-16 3 views
2

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

+0

привет, пожалуйста, дайте дополнительную информацию, что вам нужно в точности? вы хотите посчитать время между вопросом и ответом? –

+0

@HelpMeToHelpВы игра Викторины имеют ограничение по времени (от 2 минут). Я хочу создать счетчик часов на 2 минуты 0 с до 0 минута 0. Когда закончится время, викторина завершена. И покажите часы на моем экране викторины (пример изображения http://pastormikelandry.files.wordpress.com/2010/02/countdown-clock1.jpg) –

+0

привет, если у вас есть сомнения, требующие этого, эта комната http: //chat.stackoverflow .com/rooms/4014/Knowledge-sharing-center-for-blackberry-and-java –

ответ

3

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

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

Я добавляю ваш код в свое приложение, но, похоже, у него есть некоторая ошибка. Вы можете проверить его еще раз? –

+0

Я создаю новое приложение, в котором только один Myscreen расширяет MainScreen. и я добавляю ваш код в конструктор MyScreen, есть 4 ошибки . Нельзя ссылаться на не конечную переменную mille внутри внутреннего класса, определенного другим методом. (at if (mille! = 0) –

+0

Да, это нормально. Спасибо большое –

0

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

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

INT сек = 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); 
} 

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

+0

Это нормально. Спасибо вам большое alshaik786 –

+0

Я хочу отображать эти часы в любой момент в моем приложении, и он все еще работает, когда я нажимаю новый экран. могу я ? –

+0

Перед тем, как нажать, вы должны проверить условие, что if (timer! = Null) timer.close(); – alishaik786

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

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