addKeyListener не работает должным образом - PullRequest
0 голосов
/ 27 ноября 2011

Я использую Key Events over Key Binding, потому что я еще не понимаю связывание ключей.

Я делаю JFrame с JPanel кнопкой J.

Я копирую JPanel как панель в классе фрейма и JButton как кнопку в классе панели. Я продолжаю редактировать класс панели.

Если я addKeyListener с новым keyAdapter, который просто печатает «нажата клавиша», ничего не произойдет, если я что-нибудь наберу. НО, если я сделаю button.addKeyListener с тем же общим keyAdapter, «нажатие клавиши» будет печататься, когда я нажимаю клавишу.

Полагаю, это как-то связано с экземплярами. Итак, мой первый вопрос: как мне сделать так, чтобы компонент добавил слушателя ключа к себе и / или почему бы не вызвать addKeyListener или даже this.addKeyListener, чтобы это сделать?

Когда я добавляю ключевой слушатель, код продолжает работать (как это, вероятно, должно), поэтому я попытался while(some boolean) thread.sleep(1000) просто заставить ключевой слушатель изменить логическое значение при нажатии клавиши. Я просто хочу, чтобы мой код ждал, пока не будет нажата клавиша. Я понимаю, что это не так много, но мой вопрос: есть ли лучший или более чистый способ приостановить методы / ждать ввода?

1 Ответ

2 голосов
/ 27 ноября 2011

Если я добавлюKeyListener с новым keyAdapter, который просто печатает «нажатая клавиша», ничего не произойдет, если я наберу что-нибудь.

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

...