有没有一种方法可以知道内部框架的焦点何时更改为桌面窗格中的另一个焦点?

Is there a method to know when the focus of an internal frame has changed to a different one within a desktop pane?

我有一个 JDesktopPane 可以创建多个 JInternalFrame 组件。桌面保留了一些每个内部框架需要知道的变量,所以每次点击内部框架时,都需要检查桌面变量并复制它们。创建内部框架时,我可以复制它们,但是一旦创建框架,我不知道如何让它在每次单击时检查变量。

问题是,如果我在内部框架上使用侦听器,我就无法使用桌面的方法,而且在桌面上我不知道如何检查内部框架是否已被单击(因为它会创建运行 时间的内部帧)。我想的是在 JDesktopPane 中使用一种方法,该方法复制变量并在每次单击任何内部框架时调用(例如,如果单击桌面的任何部分),但我不当点击内部框架时(如果有的话),我不知道桌面会触发什么事件。

那么,有没有什么方法可以在每次选择内部框架时激活桌面窗格(或任何地方)?

but I don't know what event is triggered in then desktop when the internal frames are clikced

您可以使用 InternalFrameListener.

阅读有关 How to Write and InternalFrameListener 的 Swing 教程部分,了解更多信息和工作示例。

I can't use desktop's methods

为什么不呢?

您可以使用内部框架的getDesktopPane()方法获取桌面窗格。