[英]Having Issues With Java Swing Timer and Infinite Loops
我的Java代碼片段出現問題,似乎正在創建一個無限循環。
public void progress(){
x = 3;
timer = new Timer(800, new ActionListener() {
public void actionPerformed(ActionEvent evt){
System.out.println(x);
x--;
if(x < 1){
UI();
timer.stop();
}
}
});
timer.start();
}
UI方法要求通過SavitchIn進行輸入,但似乎沒有運行該行。 在我要求在UI方法中輸入之前,我先進行打印,並且打印工作正常。 當我從代碼中刪除此計時器並保持UI方法不變時,它可以正常工作。 打印,然后接受輸入。 我也在UI方法中添加了timer.stop(),我肯定計時器已停止,但是運行該程序后,我被迫下次下次重置虛擬機,否則它將無法運行。 任何幫助表示贊賞!
您的UI()
方法可能應該在后台線程上調用,因為它可能會占用Swing事件線程(我們不得不猜測,因為您沒有顯示它)。 因此,創建一個SwingWorker或后台線程,然后在此進行調用。 有關更多信息,請閱讀Swing中的並發 。
例如,
public void progress() {
x = 3;
timer = new Timer(800, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.out.println(x);
x--;
if (x < 1) {
new Thread(new Runnable() {
public void run() {
UI();
}
}).start();
timer.stop();
}
}
});
timer.start();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.