如何在不阻止UI的情况下暂停指定时间的Java? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我想这已经被覆盖了,但我没有找到真正解决我问题的答案。在此代码摘录中,我想显示对按钮单击的反应(在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();
    }
}
java timer wait
1个回答
1
投票

用这样的东西替换你的**--<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调度线程中执行的某些操作。

© www.soinside.com 2019 - 2024. All rights reserved.