2012-05-17 84 views
0

嗨Im試圖顯示一個標籤Field顯示一個計時器... 計時器應該啓動時,單擊按鈕,所以下面的代碼是在fieldChanged自動生成的方法,因爲我實現FieldChangeListener ... 這是代碼:在黑莓顯示計時器

Timer t = new Timer(); 
Date startTime = new Date(); 
LabelField courseTime = new LabelField() 
t.schedule(new TimerTask(){ 

public void run() { 
// TODO Auto-generated method stub 
Date now = new Date(); 
SimpleDateFormat date = new SimpleDateFormat("HH:mm:ss"); 
courseTime.setText(date.formatLocal(now.getTime() - startTime.getTime())); 
}}, 0, 10); 

我有兩個問題與此代碼: 當我按一下按鈕我有一個IllegalStateException異常。不知道它從何而來 但我有評論這一部分,它來自這裏.. 然後,我接受例外後,定時器啓動,但格式是19:00:00,沒有t 00:00:00像我希望的那樣... 感謝您的幫助!

+0

您需要更多地解釋您嘗試實現的時間格式。我只回答了'更新LabelField文本而沒有得到異常'的部分。 – Rupak

回答

0

涉及設備用戶界面的任何操作必須使用鎖,UiApplication.getEventLock()保持。

請嘗試下面的代碼以更新LabelField文本。

synchronized (UiApplication.getEventLock()) { 
    courseTime.setText("some text"); 
} 
+0

是的,這是做的伎倆...我只是想顯示小時,分鐘和秒,因爲用戶點擊按鈕...爲此,我把該模式(HH:毫米:SS)的simpleDateFormat ...當我顯示計時器,它不在00:00:00初始化,並開始計數,但它開始於19:00:00 ...我認爲錯誤可能在模式,但不知道.. –

+0

我不得不說一些關於你的問題。不要誤解我的意思。我想你確實沒有發佈你在項目中使用的實際代碼,因爲你發佈的代碼有編譯錯誤。如果由於某些限制而無法發佈實際代碼,那麼您可以創建一個測試項目,併發布代表問題的代碼,當然也包括迄今爲止所做的工作。在你的代碼中,你沒有粘貼任何有關變量'startTime'初始化的東西。回答這個問題很重要。而且每個人都沒有頭腦閱讀技巧,:)。所以,請更新您的問題。 – Rupak

+0

謝謝,忘了把它.. –