我有一个java swing 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();
}
}
最佳答案
您正在使用 Thread.sleep(...)
和 while (something)
循环卡住 Swing 事件线程。解决方案:不要这样做——不要在事件线程上调用占用事件线程并阻止其执行必要任务的代码。相反,更改程序的状态。对于您的时钟,请使用 Swing Timer 。例如,请看我的答案和代码here .
关于java - 为什么我的按钮不可点击? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25613743/