如何在Java中的代码部分之间等待指定的时间?

时间:2014-07-21 23:04:12

标签: java applet awt sleep wait

我有一个相当简单的问题,我没有在任何地方看到适当的答案。

我正在使用java.awt设计Java applet。我想要做的是让Java在执行简单图形动画的方法中执行代码的不同部分之间等待几秒钟。

所以它是这样的:

runAnimation() {

// draw red shapes

// wait 2 seconds so the shapes remain visible

// set color of shapes to green and repaint

}

正如其他地方所建议的,如果我使用类似

的东西
try {

// do first task

Thread.sleep(2000);

// do second task

        } catch (InterruptedException e) {
        }

程序仅在等待2秒后显示第二个任务的结果,即我从未看到红色形状。我希望看到红色形状两秒钟,然后将它们设置为蓝色等等。

1 个答案:

答案 0 :(得分:5)

您没有说明您使用的GUI /图形库是哪些关键信息。如果是Swing或AWT,那么使用Swing Timer进行暂停。您不应该使用Thread.sleep(...),因为您将GUI的事件线程置于休眠状态,导致整个应用程序冻结。

如,

someColor = Color.RED;
int delay = 2000;
repaint()
Timer swingTimer = new Timer(delay, new ActionListener() {
    public void actionPerformed(ActionEvent e) { 
        someColor = Color.GREEN;
        repaint();
    }
});
swingTimer.setRepeats(false);
swingTimer.start();