0

我正在尝试在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 秒后,气球移动到另一个位置,但它在视觉上没有移动。我能做些什么呢?

4

1 回答 1

0

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

相反,您应该使用 Swing Timer 每 500 毫秒触发一个事件以移动标签。阅读 Swing 教程中有关如何使用计时器的部分以获取更多信息。

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

于 2013-03-22T19:49:33.337 回答