我有一个Java应用程序,我称之为 App 。应用程序偶尔会显示一个我们称之为 myFrame 的JFrame。应用程序还将显示一个包含在JDialog或JFrame中的JTextArea(我不知道哪个,但我可以找出是否有必要回答这个问题)。我们将此JTextArea称为“myTextArea”。
现在,发生以下事件序列:
请注意myTextArea不包含在myFrame中。
这里发生了什么?有没有人听说过不可见的JFrame接收击键?不仅要接受击键,还要从其他具有焦点的组件中窃取它们?
答案 0 :(得分:1)
我发现了什么导致了这个问题。 MyFrame
有一个实现MyKeyEventHandler
的类KeyEventDispatcher
。即使针对dispatchKeyEvent(KeyEvent e)
的击键,方法myTextArea
也始终返回false。因此,击键不会达到myTextArea
。
答案 1 :(得分:0)
这不是关于切换可见性。 JFrame首先被初始化并且仍然具有焦点。你只是让它变得隐形,而不是从中夺走焦点。
此外,您的JTextBox需要有一个父容器。可能
myFrame.add(myTextArea);
应该有效。要将焦点转移到JTextArea,请使用:
myTextArea.requestFocus();