Как мне направить ввод с клавиатуры на нецелевой JTextField? - PullRequest
0 голосов
/ 14 февраля 2011

Некоторый фон: У меня есть пошаговая игра, в которой вы можете играть в несколько одновременных игр в разных окнах. Каждое окно / игра имеет свой собственный чат, а также своего рода панель игровых действий, которая появляется, когда наступает ваш черед действовать.

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

Что я хочу: Некоторый способ отправить события клавиатуры на JTextField, который больше не является владельцем фокуса (а также в другом окне / JFrame, отличном от текущего владельца фокуса). Есть ли способ сделать это? И как?

План b будет состоять в том, чтобы установить какой-то таймер в чате и позволить окну отказаться от фокусировки, пока не пройдет x промежуток времени с момента последнего нажатия клавиши в чате, но это может быть не совсем корректно. Переключатель фокуса, поскольку время вашего действия уже ограничено.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2011

Я мог бы найти то, что искал здесь . Остается увидеть, попробую ли я его использовать или изменим требования:)

См. эту ссылку , чтобы найти работающий SSCCE о том, как повторно отправить KeyEvents на любой текстовый компонент.

0 голосов
/ 14 февраля 2011

Вы можете установить alwaysOnTop текущего окна чата в значение true, пока в текстовом поле чата есть текст, позвонив по телефону:

java.awt.Window
public final void setAlwaysOnTop(boolean alwaysOnTop)
                         throws SecurityException

Когда пользователь нажимает Enter или нажимает кнопку Отправить, сбрасывает alwaysOnTop, поэтомудругие окна могут сфокусировать внимание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...