我有一个 Java 应用程序,我将其称为 App。应用程序偶尔会显示一个我们称之为 myFrame 的 JFrame。应用程序还将显示包含在 JDialog 或 JFrame 中的 JTextArea(我不确定是哪一个,但我可以找出是否有必要回答这个问题)。我们将此 JTextArea 称为“myTextArea”。
现在,发生以下事件序列:
- 我们显示 myFrame。它有焦点,你可以给它输入。
- 我们调用 myFrame.setVisible(false)
- 我们显示 myTextArea。
- 我们调用 myTextArea.requestFocus()。
- myTextArea 有焦点(光标在其中闪烁),但所有输入的击键都会发送到 myFrame!
请注意,myTextArea 不包含在 myFrame 中。
这是怎么回事?有人听说过不可见的 JFrame 接收击键吗?不仅接收击键,还从其他具有焦点的组件中窃取它们?
最佳答案
我找到了导致问题的根本原因。 MyFrame
有一个实现 KeyEventDispatcher
的类 MyKeyEventHandler
。方法 dispatchKeyEvent(KeyEvent e)
始终返回 false,即使对于用于 myTextArea
的击键也是如此。因此击键不会到达 myTextArea
。
关于java - JFrame 即使在似乎失去焦点后仍继续接收击键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4370871/