输出有关当前焦点组件的信息

Output information about currently focused component

我有很多包含多个组件的 JFrames。它们通常是动态构建的,所有组件也是动态添加的,但有些是手动构建的。

想要我想要: 我想添加一个新组件,比如一个只读的 JTextField,它打印有关 JFrame 中当前聚焦组件的信息。目的是有一个非常简单的方法来查看每个组件从何处获取其数据(它们通常绑定到数据库中的字段或绑定到仅返回所需数据的某种方法)和其他有趣的东西。 我们就称它为 "DebugInfoComponent".

我目前的想法,感觉有些原始: 我可以 "just" 向每个 JFrame 的每个组件添加一个 FocusListener,然后通知 DebugInfoComponent,后者然后根据被聚焦的组件使用相关信息调用 setText。

我的问题: 有没有更好的方法?

使用 KeyboardFocusManger,您可以使用它的 属性 更改支持来监视应用程序焦点状态的更改。

您可能想要监控 focusOwner 属性,但您也应该调查其他属性