我有一个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

10-07 18:45