Добавление MouseListener ломает Keylistener

Когда я удаляю все компоненты MouseListener и запускаю апплет, мне нужно щелкнуть по нему, чтобы сфокусировать его, тогда KeyListener работает отлично. Чтобы решить эту проблему, я добавил «начальную страницу», где вы должны нажать «Пуск» перед запуском игры. Это даст аплету фокус и не запустится, пока игрок не будет готов в то же время. Я добавляю MouseListener, и он отлично работает, но теперь KeyListener вообще не регистрируется. Я не могу понять почему, но я думаю, что это как-то связано с фокусировкой. Кто-нибудь знает, что здесь нужно делать?

Код можно найти здесь: http://pastebin.com/LDxtk878

Спасибо!


person tgrosinger    schedule 10.03.2011    source источник


Ответы (1)


Не изучая все 322 строки вашего кода, вы можете посмотреть статью Как написать прослушиватель клавиш, обращая внимание на раздел, следующий за «Примечание. Чтобы активировать события клавиатуры, компонент должен иметь фокус клавиатуры».

Кроме того, рассмотрите возможность расширения JApplet в качестве альтернативы.

person trashgod    schedule 10.03.2011
comment
Я добавил this.setFocusable(true) после того, как добавил слушателей в init(), и это решило проблему. Почему это нужно делать, когда есть прослушиватель мыши, а не иначе? - person tgrosinger; 10.03.2011
comment
Щелчок мышью изменяет фокус. - person trashgod; 10.03.2011