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

0 java applet sleep awt 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

}
Run Code Online (Sandbox Code Playgroud)

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

try {

// do first task

Thread.sleep(2000);

// do second task

        } catch (InterruptedException e) {
        }
Run Code Online (Sandbox Code Playgroud)

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

Hov*_*els 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();
Run Code Online (Sandbox Code Playgroud)