KeyListener только иногда работает - PullRequest
1 голос
/ 31 октября 2011

Я сделал клон Понга и столкнулся с проблемой. KeyListener работает только иногда. Там нет шаблона, который я смог найти.

Для справки вот мой Pong.java (основной класс): http://pastebin.com/8d7BqK4x

Вот Board.java (Графика и KeyListener): http://pastebin.com/0zb526BE

Ответы [ 2 ]

3 голосов
/ 31 октября 2011

KeyEvents генерируются только тогда, когда компонент имеет фокус.

Лучшим подходом является использование привязок клавиш , которые работают, даже когда компонент не имеет фокуса.

2 голосов
/ 31 октября 2011

Обычно вы не хотите использовать KeyListener из-за проблем с фокусировкой (вероятно, именно поэтому ваш слушатель только время от времени слушает - вероятно, ваш слушающий компонент теряет фокус, и поэтому KeyListener теряет свою функцию.

Лучше использовать привязки клавиш, когда вам не нужно особо волноваться о проблемах фокуса и когда вы имеете дело с конструкцией более высокого уровня, которую Swing использует для прослушивания компонентов. Учебники "покажут вам путь".

...