我正在尝试使用单个线程在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 :(得分:0)
您正在使EDT进入睡眠状态,这意味着在整个动画结束之前,GUI无法重新绘制。
相反,您应该使用Swing Timer每500ms触发一次事件来移动标签。有关详细信息,请阅读How to Use Timers上的Swing教程中的部分。
此外,您可以搜索论坛以查找大量示例。 “动画”“计时器”可能是很好的关键词。