2013-10-12 3 views
1

Java 애플릿에서 스톱워치를 만들려고합니다. 문제는 .. "number"라는 텍스트 필드가 있습니다. 입력을 받고 시작 버튼을 누르면 다음과 같은 루프가 나타납니다 ... // NETBEANS를 사용합니다! 숫자 필드의 매 1 초 텍스트를 하나씩 줄여야합니다.하지만이 일은 일어나지 않습니다. 코드는 정상적으로 작동합니다. 그러나 루프가 실행되는 동안이 아니라 시간 완료 후 "0"이 표시됩니다.while 루프에서 java 애플릿의 텍스트 필드에 텍스트를 설정할 수 없습니다.

private void startActionPerformed(java.awt.event.ActionEvent evt) 
{          
    int i = Integer.parseInt(number.getText()); 
    number.setText(Integer.toString(i)); 

    while(i!=0) 
    { 
     System.out.print(i); 
     //number.setText(Integer.toString(i)); 
     number.setText(""); 
     try{Thread.sleep(900);}catch(Exception e){e.getMessage();System.out.println(e);} 
     i--; 
    } 
} 

답변

5

while 루프가 정상적으로 작동하지만 Thread.sleep이 스윙 이벤트 스레드를 잠자기 상태로 설정하고 전체 GUI를 사용 중입니다. 대신 Swing Timer을 사용하십시오.