我有一个Java应用程序,我将其称为App。应用偶尔会显示一个我们称为myFrame的JFrame。应用程序还将显示JDialog或JFrame中包含的JTextArea(我不确定是哪个,但我可以找出是否有必要回答这个问题)。我们将此JTextArea称为“ myTextArea”。
现在,发生以下事件序列:
我们显示myFrame。它具有焦点,您可以输入。
我们称myFrame.setVisible(false)
我们显示myTextArea。
我们称为myTextArea.requestFocus()。
myTextArea具有焦点(光标在其中闪烁),但是所有输入的击键都会发送到myFrame!
请注意,myTextArea不包含在myFrame中。
这里发生了什么?有人听说过不可见的JFrame接收击键吗?不仅会收到击键,还会从其他具有焦点的组件中窃取它们?
最佳答案
我发现了造成问题的根本原因。 MyFrame
具有实现MyKeyEventHandler
的类KeyEventDispatcher
。即使对于打算用于dispatchKeyEvent(KeyEvent e)
的击键,方法myTextArea
始终返回false。因此,击键没有达到myTextArea
。