JInternalFrame前面和焦点

时间:2010-12-02 17:22:08

标签: java user-interface swing jinternalframe jdesktoppane

如何将JInternalFrame推送到JDesktopPane中所有帧的顶部?

6 个答案:

答案 0 :(得分:3)

尝试grabFocus()和requestFocus()。其中一个应该工作。我个人只使用requestFocus()。

答案 1 :(得分:2)

阅读JInternalFrame API,并点击“如何使用内部框架”的Swing教程链接,在这里您可以找到如何“选择”活动内部框架的工作示例。

答案 2 :(得分:2)

在此example中,javax.swing.Action用于从菜单中选择框架。

答案 3 :(得分:2)

OP已注意到setSelected无效,他需要手动拨打activateFrame。这听起来与GTKLookAndFeel的问题类似。我有一个应用程序,所有应用程序都使用setSelected来最终触发activateFrame。使用Windows和Mac本机外观工作得很好; activateFrame将自动被调用。

在Ubuntu上,选择LaF的系统为GTKLookAndFeel,无论出于何种原因,它都没有调用activateFrame。似乎setSelected没有出现错误或任何错误,它只是没有像其他LaF似乎那样调用activateFrame。我认为这是GTKLookAndFeel兼容性问题。

最后,我对此进行了处罚,并禁止GTKLookAndFeel,将其替换为MetalMotif也有兼容行为(但它太丑了......)。代码看起来像这样:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
if (UIManager.getLookAndFeel() instanceof com.sun.java.swing.plaf.gtk.GTKLookAndFeel)
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());

答案 4 :(得分:1)

/ *通过调用JInternalFrame方法取消选择当前JInternalFrame方法setSelected(false)

* /然后使用相同的方法选择新的JInternalFrame;即setSelected(true)

示例代码:

尝试{  jframe1.setSelected(假);  jframe2.setSelected(真); } catch(PropertyVetoException ex){}

答案 5 :(得分:1)

Closing a modal JInternalFrame 看禅先生的帖子(我)