Java图形无法正确更新

时间:2014-12-02 20:44:05

标签: java graphics drawing

在我的程序中,屏幕上的图形应该在屏幕上移动。我有一个调用绘图函数的循环(绘制函数是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函数使用的变量的值, 更改所有对象位置的xy变量。

发生了什么事情,它没有更新?

1 个答案:

答案 0 :(得分:4)

您正在Swing事件线程的Swing程序中调用Thread.sleep(...)。这样做是为了让整个应用程序都处于睡眠状态,因此您不应该这样做。而是使用Swing Timer来驱动动画。

例如:

有关更具体的帮助,请考虑发布更多代码,最好是mcve