如何在面板中移动图标

时间:2013-03-22 19:45:38

标签: java multithreading

我正在尝试使用单个线程在JPanel中移动带有图像的JLabel。

private void moveBaloon(JLabel Baloon){
    for (int i = 0; i < 10; i++) {
        try {
            Thread.sleep(500);
        } catch (InterruptedException ex) {
            Logger.getLogger(Bowandarrow.class.getName()).log(Level.SEVERE, null, ex);
        }
        Point point= Baloon.getLocation();
        Baloon.setLocation(point.x, point.y-4);

    }
}

5秒钟后,气球移动到另一个位置但不会在视觉上移动。我能做些什么呢?

1 个答案:

答案 0 :(得分:0)

您正在使EDT进入睡眠状态,这意味着在整个动画结束之前,GUI无法重新绘制。

相反,您应该使用Swing Timer每500ms触发一次事件来移动标签。有关详细信息,请阅读How to Use Timers上的Swing教程中的部分。

此外,您可以搜索论坛以查找大量示例。 “动画”“计时器”可能是很好的关键词。