2012-05-17 2 views
0

안녕하세요, 저는 타이머를 보여주는 labelField를 표시하려고합니다 ... 단추를 클릭하면 타이머가 시작되어 FieldChangeListener를 구현하기 때문에 다음 코드가 fieldChanged 자동 생성 된 메서드 안에 있습니다. 이 코드에 두 가지 문제가블랙 베리에 타이머 표시

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

달성하려는 시간 형식에 대해 더 자세히 설명해야합니다. 나는'exception을 얻지 않고 LabelField 텍스트를 갱신하는 것 '의 부분에만 답했다. – Rupak

답변

0

장치의 사용자 인터페이스와 관련된 모든 작업은 잠금 장치 UiApplication.getEventLock()이 보유되어야합니다.

LabelField 텍스트를 업데이트하려면 다음 코드를 시도하십시오.

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

그 트릭을 했어 ... 나는 사용자가 버튼을 클릭 한 이후로시, 분, 초를 보여주고 싶다 ... 그 패턴 (HH : mm : ss)을 simpleDateFormat에 넣었다. 타이머를 보여 주면 00:00:00에 초기화되지 않고 카운팅을 시작하지만 19:00:00부터 시작합니다 ... 패턴에 오류가있을 수 있다고 생각합니다. –

+0

뭔가를 말해야합니다. 귀하의 질문에 대해. 나를 오해하지 마라. 게시 된 코드에 컴파일 오류가 있기 때문에 프로젝트에 사용중인 실제 코드를 게시하지 않았을 것입니다. 일부 제약으로 인해 실제 코드를 게시 할 수없는 경우 테스트 프로젝트를 만들고 문제를 나타내는 코드를 게시 할 수 있으며 물론 지금까지 수행 한 작업을 게시 할 수 있습니다. 귀하의 코드에서, 당신은 변수'startTime'의 초기화에 관해 아무것도 붙여 넣지 않았습니다. 이 질문에 답하는 것이 중요합니다. 그리고 모두는 마음 독서 기술을 가지고 있지 않습니다 :). 따라서 질문을 업데이트하십시오. – Rupak

+0

감사합니다. –

관련 문제