我正在使用 Swing 程序并且遇到了一些麻烦。该程序有两个窗口(都是 JFrames)。主窗口很好,应该与这个问题无关。
我遇到问题的窗口包含一个带有 JPanel 的 JScrollPane,并且有一个 JMenuBar。JPanel 上有一堆 JTextComponents(一些 JTextFields,一些 JTextAreas)。
我想要做的是有一个附加到 JMenuItem 的 ActionListener 找到具有焦点的 JTextComponent。
我在focused component reference和How to find out which object current has focus中看到了之前的帖子。我的问题是调用特定窗口的getFocusOwner()
方法仅返回 JFrame 的JRootPane
,这完全没有帮助。所讨论的 JScrollPane 和 JPanel 都可以根据它们的isFocusable()
方法获得焦点。即使我在单击菜单项之前将文本实际输入到其中一个 JTextComponents 中,也会发生这种情况。当我打开菜单和所有内容时,光标仍然在文本字段中闪烁。对于它的价值,getMostRecentFocusOwner()
也只需返回 JRootPane。