Это программа, которая не работает:
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){
}
Он появляется на последней позиции после задержки, но не двигается, кто-нибудь знает почему? А как его улучшить?
Спасибо!




Сначала прочтите Параллелизм в Swing, чтобы понять, почему у вас возникают проблемы.
Во-вторых, прочтите Как использовать таймеры свинга для решения вашей проблемы
Решение может выглядеть примерно так ...
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();