我有一个相当简单的问题,我没有在任何地方看到适当的答案。
我正在使用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秒后显示第二个任务的结果,即我从未看到红色形状。我希望看到红色形状两秒钟,然后将它们设置为蓝色等等。
答案 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();