2013-03-22 3 views
0

Я пытаюсь переместить JLabel с изображением в JPanel с помощью одного потока.Как переместить значок в панели

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) –

ответ

0

Вы заставляете EDT спать, что означает, что графический интерфейс не может перерисовываться до завершения всей анимации.

Вместо этого вы должны использовать таймер Swing для запуска события каждые 500 мс для перемещения метки. Прочтите раздел из учебника Swing по телефону How to Use Timers для получения дополнительной информации.

Также вы можете найти форум, чтобы найти множество примеров. «анимация» «таймер», вероятно, будет хорошим ключевым словом.

Смежные вопросы