2013-03-22 65 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教程的部分以獲取更多信息。

此外,你可以搜索論壇找到很多的例子。 「動畫」「計時器」可能是很好的關鍵字。