2

如何将 a 推JInternalFrame到 JDesktopPane 中所有框架的顶部?

4

6 回答 6

3

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

于 2010-12-02T17:28:32.853 回答
2

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

于 2010-12-02T18:19:58.887 回答
2

在此示例中,ajavax.swing.Action用于从菜单中选择帧。

于 2010-12-02T19:06:27.727 回答
2

OP 注意到这setSelected不起作用,他需要activateFrame手动调用。这听起来类似于我遇到的问题GTKLookAndFeel。我有一个应用程序,它全部连接起来setSelected以最终触发activateFrame. 与 Windows 和 Mac 原生外观和感觉配合良好;activateFrame会被自动调用。

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

最后,我对此进行了抨击,只是禁止了GTKLookAndFeel,将其替换为Metal. Motif也有兼容的行为(但它太丑了......)。代码看起来像这样:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
if (UIManager.getLookAndFeel() instanceof com.sun.java.swing.plaf.gtk.GTKLookAndFeel)
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
于 2011-07-08T22:14:07.727 回答
1

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

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

示例代码:

尝试{ jframe1.setSelected(false); jframe2.setSelected(true); }catch (PropertyVetoException ex) {}

于 2010-12-06T16:54:50.247 回答
1

关闭模态 JInternalFrame 请参阅 Zen(我)先生的帖子

于 2011-03-28T03:52:05.683 回答