如何在不阻止UI的情况下暂停指定时间的Java? [重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在不阻止UI的情况下暂停指定时间的Java? [重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我想这已经被覆盖了,但我没有找到真正解决我问题的答案。在此代码摘录中,我想显示对按钮单击的反应(在lblMessage中设置文本),等待一秒钟,然后显示另一个图像。
在标记为“等待1000毫秒”的部分中,我尝试了Thread.sleep(),以及计算经过的系统时间。但是,在这两种情况下,lblMessage仅在等待时间之后填充。
我遇到了Timer,但我无法弄清楚如何使用它的语法(特别是需要输入的任务)。
在此先感谢您的帮助!
public void answerButtonClicked(ActionEvent event) {
endTime = System.nanoTime();
elapsedTime = (endTime - startTime);
String answerTime = String.format("%.2f", (elapsedTime/1000000000));
Button btnAnswer = (Button)event.getSource();
String answer = btnAnswer.getId();
String correctAnswer = mpScenes.get(model.getNextScene(round-1));
if (answer.equals(correctAnswer)) {
lblMessage.setText("Richtig (" + answerTime + "s)");
} else {
lblMessage.setText("Falsch (" + answerTime + "s)");
}
**--<wait 1000 ms>--**
if (round < numberOfRounds) {
round++;
setNewMainImage(round);
} else {
endOfGame();
}
}
答案
用这样的东西替换你的**--<wait 1000 ms>--**
:
Timer timer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (round < numberOfRounds) {
round++;
setNewMainImage(round);
} else {
endOfGame();
}
}
});
timer.start();
javax.swing.Timer
允许您延迟稍后将在swing UI调度线程中执行的某些操作。
以上是关于如何在不阻止UI的情况下暂停指定时间的Java? [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Flutter - 如何在不阻止UI的情况下计算包含未来的繁重任务?