[英]Java Swing Timer infinite loop
我遇到了一個簡單的Java swing Timer I問題。 它做的一切都很好,直到不得不停下來。 我認為它是在定時器上創建一個無限循環的定時器,但我一直在關注多個教程,我無法看到我出錯的地方。
代碼說明:runButtonListener需要循環遍歷filelinecount變量所說的次數(從不同的函數讀取)。 目前的代碼只是打印到系統,我將在稍后更新一些動畫。 filelinecount在下面的代碼中為0,但由不同的函數更改。 因此,為了調試,我認為如果手動更改filelinecount的值,附加的代碼是可運行的。
任何幫助是極大的贊賞
private int filelinecount = 0;
private int timercount = 0;
private Timer timer;
class runButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
// LOOK AT TIMER!!!
if (timercount == filelinecount) {
timer.stop();
System.out.println("stopping");
//timercount = 0;
} else {
System.out.println("yo " + timercount + "," + filelinecount);
timercount++;
}
timer = new Timer(100,this);
timer.start();
}
}
每次定時器回叫您時,您都會創建一個新定時器並啟動它。
這包括你調用timer.stop()
!
如果要繼續,則只需創建新計時器。
真的,你應該看看另一種方法,而不是不斷地重新創建計時器。 根據您的具體要求,有多種方法可供選擇。
例如,使用scheduleAtFixedRate
,使用工作線程或SwingWorker
, ScheduledExecutorService
等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.