JInternalFrame前置并聚焦

如何将一个
JInternalFrame
推到JDesktopPane中所有帧的顶部?     
已邀请:
阅读JInternalFrame API并按照“如何使用内部框架”的Swing教程的链接,您将在其中找到有关如何“选择”活动内部框架的工作示例。     
尝试grabFocus()和requestFocus()。其中一个应该工作。我个人只使用requestFocus()。     
在此示例中,
javax.swing.Action
用于从菜单中选择帧。     
OP已注意到
setSelected
无效,他需要手动拨打
activateFrame
。这听起来类似于我对
GTKLookAndFeel
的问题。我有一个应用程序,所有连接使用
setSelected
最终触发
activateFrame
。使用Windows和Mac本机外观工作得很好;
activateFrame
会被自动调用。 在Ubuntu上,选择LaF的系统是
GTKLookAndFeel
,无论出于何种原因,这不是叫
activateFrame
。看起来
setSelected
并没有出现任何错误,只是没有像其他LaF似乎那样打电话给
activateFrame
。我认为这是一个兼容性问题。 最后我对此进行了抨击,并且禁止
GTKLookAndFeel
,将其替换为
Metal
Motif
也有兼容的行为(但它太丑了......)。代码看起来像这样:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
if (UIManager.getLookAndFeel() instanceof com.sun.java.swing.plaf.gtk.GTKLookAndFeel)
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
    
/ *通过调用JInternalFrame方法取消选择当前JInternalFrame方法setSelected(false) * /然后使用相同的方法选择新的JInternalFrame;即setSelected(true) 示例代码: 尝试{  jframe1.setSelected(假);  jframe2.setSelected(真); } catch(PropertyVetoException ex){}     
关闭模态JInternalFrame 看禅先生的帖子(我)     

要回复问题请先登录注册