如何在JDesktopPane中激活(拥有焦点)框架(JInternalFrame)?我需要它用于我的MDI记事本(不是任何人都会使用它,只是一个培训项目)。看看api,我只看到函数来获取所有JInternalFrame,而不是活动的。
答案 0 :(得分:11)
使用JDekstopPane.getSelectedFrame()方法(来自doc:此JDesktopPane中当前有效的JInternalFrame,如果没有JInternalFrame当前处于活动状态,则为null。)或JDesktopPane.getAllFrames()
获取所有{的列表{1}}当前显示在桌面上并检查JInternalFrames
方法。
答案 1 :(得分:2)
制作List<JInternalFrame>
并在迭代时检查isSelected()
。
附录:另请参阅使用Action
从菜单中选择内部框架的example。
答案 2 :(得分:2)
你看过标题为How to Use Internal Frames的Java教程吗?在您的代码中,您需要InternalFrameListener
(API)(Tutorial)并收听激活/停用事件。激活意味着内部框架被带到顶部;停用意味着它不再是最重要的。由于JDesktopPane
扩展JLayeredPane
,您还可以设置添加到其中的组件的z顺序。
不要遍历所有窗格 - 使用事件。
如果出于某种原因,您希望轮询用户界面而不是使用事件驱动方法,则可以调用getSelectedFrame
来返回有效JInternalFrame
。我不确定为什么没有人提到它。