这是不起作用的程序:
JLabel pic[][] = new JLabel[7][9];
try{
for(int i = 0; i < 70; i ++){
pic[x_position][y_position].setLocation((10 + 70 * x_position) + i, (10 + 70 * y_position));
pic[x_position2][y_position2].setLocation((10 + 70 * x_position2) - i, (10 + 70 * y_position2));
Thread.sleep(5);
}
}
catch(Exception f){
}
它出现在延迟后的最后一个位置,但它没有移动,有人知道为什么吗?我该如何改进呢? 谢谢!
答案 0 :(得分:0)
首先,请阅读Concurrency in Swing以了解您遇到问题的原因
其次,请阅读How to use Swing Timers以解决您的问题
解决方案可能看起来像这样......
Timer timer = new Timer(5, new ActionListener() {
int count = 0;
@Override
public void actionPerformed(ActionEvent e) {
if (count >= 70) {
((Timer) e.getSource()).stop();
return;
}
pic[x_position][y_position].setLocation((10 + 70 * x_position) + i, (10 + 70 * y_position));
pic[x_position2][y_position2].setLocation((10 + 70 * x_position2) - i, (10 + 70 * y_position2));
}
});
timer.start();