如何将键盘输入定向到非聚焦的JTextField?

时间:2011-02-14 14:31:20

标签: java swing focus

一些背景知识 我有一个回合制游戏,你可以在单独的窗口中玩几个并发游戏。每个窗口/游戏都有自己的聊天记录,还有一种游戏动作面板,轮到你轮到你了。

问题: 当你轮到你正在玩的任何一个游戏时,游戏窗口会偷走焦点,这是设计但是如果你参与任何一个游戏的聊天都很烦人,因为当焦点丢失时,聊天将不会更长时间接收你的键盘笔画。

我想要的是什么: 将键盘事件分派给不再是焦点所有者的JTextField(以及与当前焦点所有者不同的窗口/ JFrame)的某种方式。有办法做到这一点吗?怎么样?

计划b将是在聊天中设置某种计时器,并让窗口拒绝放弃焦点,直到聊天中的最后一次击键后经过了x个时间量,但是可能无法停止焦距切换,因为您的行动时间已经有限。

2 个答案:

答案 0 :(得分:0)

当聊天文本字段中的文字通过调用时,您可以将当前聊天窗口的alwaysOnTop设置为true:

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

当用户按Enter键或点击发送按钮时,重置alwaysOnTop,以便其他窗口可以加强焦点。

答案 1 :(得分:0)

我可能找到了我要找的东西here。如果我试图使用它或者我们将改变要求,仍然有待观察:)

请参阅this link,找到有关如何将KeyEvents重新发送到任何文本组件的有效SSCCE。