如何将JInternalFrame
推送到JDesktopPane中所有帧的顶部?
答案 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
,将其替换为Metal
。 Motif
也有兼容行为(但它太丑了......)。代码看起来像这样:
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 看禅先生的帖子(我)