gpt4 book ai didi

java - Java Swing 计时器和无限循环存在问题

转载 作者:行者123 更新时间:2023-11-30 03:41:05 25 4
gpt4 key购买 nike

我的 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 或后台线程并在其中执行此调用。有关更多信息,请阅读Concurrency in 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();
}

关于java - Java Swing 计时器和无限循环存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com