2016-01-23 2 views
0

Я хочу некоторое время отобразить движение метки при нажатии кнопки. Пожалуйста помоги. Просто скажи мне, как я приостановить процесс на некоторое время во время смены SetBounds, в этом методе случае сна приостанавливает процесс, но только последнее утверждение setBound выполняет только:Как приостановить процесс в случае setBounds

void ActionPerformed(..){ 
    Thread b = new Thread(); 

     try{ 
      label.setBounds(100,150,70,70); 

      b.sleep(1000); 
      label.setBounds(100,200,70,70); 

      b.sleep(1000); 
      label.setBounds(100,150,70,70); 

     }catch(InterruptedException e){ 
      e.printStackTrace(); 
     } 
} 
+1

Добро пожаловать в [SO]. Вы не сказали, какой язык или система вы используете. –

+0

с помощью java, я хочу сделать паузу при изменении setBounds –

ответ

1

Читать swing concurrency tutorial. Правило тумб:

  • вы не можете спать в отправке потока событий, потому что она замерзает интерфейс
  • вы не можете получить доступ к свинг компонентов в потоке, кроме отправки потока событий

Так , вам нужен отдельный поток, который спит, а затем просит EDT изменить границы метки.

Используйте таймер поворота или вызовите SwingUtilities.invokeLater() из вашей фоновой нити, чтобы задача изменения границ метки выполнялась с помощью EDT.

Также обратите внимание, что sleep() является статическим методом. Его следует называть с использованием Thread.sleep(), а не b.sleep().

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