В моей программе у меня есть keyListener, установленный на моем холсте. Он отлично работает, но когда я делаю Thread.sleep (1000) keyListener все еще прослушивает и читает ключи, но результат отображается только тогда, когда время ожидания закончилось. Как заставить keyListener не читать или слушать клавиши, набранные во время сна?Отключить keylistener в java
ответ
Не делать Thread.sleep()
с качелями. Из вопроса, я вычитаю, что вы делаете все в EDT (Event Dispatch Thread). Поэтому, если вы поместите EDT в режим сна, он не отключит Swing, он просто приостанавливает эти события на секунду.
Вы можете настроить таймер на одну секунду, а когда вам нужно прекратить получение ключевых событий, просто отключите компонент на setEnabled(false)
, затем запустите таймер, и когда он закончится, вы вызываете setEnabled(true)
.
Я уже пробовал делать setEnabled (false) на холсте before и setEnabled (true) после, но keylistener все еще читает ключи. –
Отключает ли события мыши блока компонентов? Я знаю, что он блокирует «ActionListener» от стрельбы, ожидая, что это не повлияет на «MouseMotionListener» (слушатель по-прежнему будет запускать события), но я не уверен в 'MouseListener'. –
@YanIvanEvdokimov у вас есть пользовательский KeyListener? Насколько я знаю, Canvas не имеет KeyListeners самостоятельно. Так что вы не можете просто обновить свой KeyListener, чтобы игнорировать вещи на секунду? –
Под «холстом» вы подразумеваете 'java.awt.Canvas'? Пожалуйста, будьте конкретны и используйте правильный случай для имен классов J2SE. Кроме того, для лучшей помощи скорее опубликуйте [SSCCE] (http://sscce.org/). –