在我的程序中,屏幕上的图形应该在屏幕上移动。我有一个调用绘图函数的循环(绘制函数是display.draw()
),但是无论何时循环运行的次数大于1,显示都不会像每次一样更新。相反,它会等到循环结束才能更新显示。
下面是刷新功能,只显然在最后运行。
public void refresh()
{
myPanel.removeAll();
myPanel.add(display.draw());
myPanel.validate();
myPanel.repaint();
}
这就是循环。我在每次迭代后添加了1 second
个睡眠,以确保它的移动速度不会超出我的预期。
for(int i = 0; i < 2; i++)
{
myGraphics.rearrange();
this.refresh();
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
}
}
myGraphics.rearrange()
只是更改drawing
函数使用的变量的值,
更改所有对象位置的x
和y
变量。
发生了什么事情,它没有更新?
答案 0 :(得分:4)
您正在Swing事件线程的Swing程序中调用Thread.sleep(...)
。这样做是为了让整个应用程序都处于睡眠状态,因此您不应该这样做。而是使用Swing Timer来驱动动画。
例如:
有关更具体的帮助,请考虑发布更多代码,最好是mcve。