2013-03-22 67 views
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秒钟后气球移动到另一个位置,但它没有视觉移动。我能做些什么来做到这一点?

+0

[如何在Swing中实现“进行中”动画?](http://stackoverflow.com/questions/12206998/how-to-implement-a-in-progress-animation-in-swing ) – 2013-03-22 19:48:39

回答

0

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

相反,您应该使用摆动计时器每隔500毫秒触发一次事件来移动标签。阅读有关How to Use Timers的Swing教程的部分以获取更多信息。

此外,你可以搜索论坛找到很多的例子。 “动画”“计时器”可能是很好的关键字。