9

如何获得 JDesktopPane 内的活动(具有焦点)框架(JInternalFrame)?我的 MDI 记事本需要它(不是任何人都会使用它,只是一个培训项目)。查看 api,我只看到获取所有 JInternalFrames 的函数,而不是活动的。

4

3 回答 3

12

使用JDekstopPane.getSelectedFrame() 方法(来自文档:此 JDesktopPane 中当前活动的 JInternalFrame,如果当前没有活动的 JInternalFrame,则为 null。)或 JDesktopPane.getAllFrames()获取JInternalFrames当前显示在桌面中的所有列表并检查isSelected()方法。

于 2011-12-17T04:40:36.350 回答
2

制作一个List<JInternalFrame>isSelected()在迭代时检查它。

附录:另请参阅此示例,该示例用于Action从菜单中选择内部框架。

于 2011-12-17T04:38:13.783 回答
2

您是否看过名为“如何使用内部框架”的 Java 教程?在您的代码中,您需要一个InternalFrameListener( API ) ( Tutorial ) 并监听激活/停用事件。激活意味着内部框架被带到顶部;停用意味着它不再位于顶部。由于JDesktopPaneextendsJLayeredPane您还可以设置添加到其中的组件的 z 顺序。

不要遍历所有窗格 - 使用事件。

如果由于某种原因您更喜欢轮询您的 UI 而不是使用事件驱动的方法,您可以调用getSelectedFrame它返回活动的JInternalFrame. 我不确定为什么没有其他人提到它。

于 2011-12-17T04:48:24.067 回答