java - JFrame 即使在似乎失去焦点后仍继续接收击键

标签 java swing jframe jtextarea

我有一个 Java 应用程序,我将其称为 App。应用程序偶尔会显示一个我们称之为 myFrame 的 JFrame。应用程序还将显示包含在 JDialog 或 JFrame 中的 JTextArea(我不确定是哪一个,但我可以找出是否有必要回答这个问题)。我们将此 JTextArea 称为“myTextArea”。

现在,发生以下事件序列:

  1. 我们显示 myFrame。它有焦点,你可以给它输入。
  2. 我们调用 myFrame.setVisible(false)
  3. 我们显示 myTextArea。
  4. 我们调用 myTextArea.requestFocus()。
  5. myTextArea 有焦点(光标在其中闪烁),但所有输入的击键都会发送到 myFrame!

请注意,myTextArea 不包含在 myFrame 中。

这是怎么回事?有人听说过不可见的 JFrame 接收击键吗?不仅接收击键,还从其他具有焦点的组件中窃取它们?

最佳答案

我找到了导致问题的根本原因。 MyFrame 有一个实现 KeyEventDispatcher 的类 MyKeyEventHandler。方法 dispatchKeyEvent(KeyEvent e) 始终返回 false,即使对于用于 myTextArea 的击键也是如此。因此击键不会到达 myTextArea

关于java - JFrame 即使在似乎失去焦点后仍继续接收击键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4370871/

相关文章:

java - 如何更改Java swing组件的默认字体大小

Java Metal Look & Feel 在最大化时隐藏 Windows 工具栏

Java如何使用GridBagLayout创建布局?

java - 用 Java 放映幻灯片?

java - 比较两个不同类型的数组,打印相同的元素 "slot"Java

java - webapp中有多个servlet时如何处理初始化失败

java - JScrollPane 使用方向键滚动

java - liquibase 与 Spring Boot 2 集成时出错

java - HornetQ - java.lang.NoClassDefFoundError : Lorg/hornetq/core/logging/Logger;

java - GridBagLayout - 不同的行大小