나는 자바 스윙 GUI 프로그램을 가지고 있고 토글 버튼을 클릭 할 때 타이머가 시작되지만 동일한 버튼을 클릭 할 수 있기를 원하고 타이머가 멈추고 바로 지금 다시 클릭하게하지 않을 것이다. . 이 내 타이머 클래스내 버튼을 클릭 할 수없는 이유는 무엇입니까? (자바)
public void runningClock(){
isPaused = false;
while(!isPaused){
incrementTime();
System.out.println("Timer Current Time " + getTime());
time.setText(""+ getTime());
try{Thread.sleep(1000);} catch(Exception e){}
}
}
public void pausedClock(){
isPaused=true;
System.out.println("Timer Current Time " + getTime());
time.setText(""+ getTime());
try{Thread.sleep(1000);} catch(Exception e){}
}
에이 내 메인 클래스
private void btnRunActionPerformed(java.awt.event.ActionEvent evt) {
if(btnRun.getText().equals("Run")){
System.out.println("Run Button Clicked");
btnRun.setText("Pause");
test.runningClock();
}
else if(btnRun.getText().equals("Pause")){
System.out.println("Pause Button Clicked");
btnRun.setText("Run");
test.pausedClock();
}
}
문제의 원인에 대한 [스윙의 동시성 (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)를 살펴보고 [스윙 타이머를 사용하는 방법 (http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html) 멀리 그것을 해결하기 위해 (이미 언급 한 바와 같이) – MadProgrammer