내가하려고 해요 :이상한 버그 - 어떻게 자바 프로그램을 일시 중지 하시겠습니까?
- 표시 JLabel의에서 텍스트, 2 초 동안
- 대기,
- 는 다음의 JLabel에 새로운 텍스트를 작성
이 간단해야 ,하지만 이상한 버그가 발생했습니다 : 첫 번째 텍스트는 쓰여지지 않습니다. 응용 프로그램은 2 초 동안 기다렸다가 마지막 텍스트를 표시합니다. 여기에 예제 코드입니다 : "클릭 수"이 코드
private void testButtonActionPerformed(java.awt.event.ActionEvent evt) {
displayLabel.setText("Clicked!");
// first method with System timer
/*
long t0= System.currentTimeMillis();
long t1= System.currentTimeMillis();
do{
t1 = System.currentTimeMillis();
}
while ((t1 - t0) < (2000));
*/
// second method with thread.sleep()
try {
Thread.currentThread().sleep(2000);
} catch (InterruptedException e) {}
displayLabel.setText("STOP");
}
, 텍스트 결코 표시되지 않습니다. 방금 2 초 멈춤 후 "중지"텍스트가 나타납니다. 루프 또는 Thread.sleep()과 함께 시스템 타이머를 사용하려고했지만 두 방법 모두 동일한 결과를 제공합니다.
(한숨) EDT (Event Dispatch Thread)를 막지 마십시오. 'Thread.sleep (n)'을 호출하는 대신에 Swing'Timer를 구현하거나'SwingWorker'를 사용하여 장시간 실행되는 작업을 수행 할 수 있습니다. 자세한 내용은 [동시성의 동시성] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)을 참조하십시오. –