我已經創建了GUI定時器,它的運行方式完全如我所願。我有一個停止和暫停按鈕,當我停止或暫停計時器並重新啓動一個新的線程時,我得到異常「AWT-EventQueue-0」java.lang.IllegalStateException:已經安排或取消的任務創建一個定時器並且不能重新啓動它
我是不確定我想要做什麼我讀過你不能重用任務,但我不知道解決這個問題。有人能幫助我嗎?我會爲此瘋狂,我似乎總是解決一個問題,但另一個問題卻出現了。
我的代碼,其確實倒計時private TimerTask task = new TimerTask(){
@Override
public void run(){
if (countdown()) {
if(minutes < 9 && seconds < 9)
timerOutput.setText("0"+minutes + ": 0" + seconds);
else if(minutes < 9)
timerOutput.setText("0"+minutes + ":" + seconds);
else if(seconds < 9)
timerOutput.setText(minutes + ": 0" + seconds);
}
else
{
System.out.println("Finish!");
timerOutput.setText("Time is up!");
timer.cancel();
startBut.setEnabled(true);
}
}
}
下面有一部分;
private boolean countdown(){
seconds --;
if (seconds < 0){
minutes--;
seconds = 59;
if (minutes == -1){
return false;
}
}
return true;
}
什麼會做 – Wolf
取決於你的類是如何組織的,而僅僅是創建一個新的每次重新計劃時間的最佳方式。如果涉及重複部分代碼,請將'run'方法內的代碼作爲單獨的方法,並在'run'方法內部調用以避免重複。 – Arrem