Java 在Swing MDI中管理JinternalFrame

Java 在Swing MDI中管理JinternalFrame,java,swing,mdi,jinternalframe,jdesktoppane,Java,Swing,Mdi,Jinternalframe,Jdesktoppane,在创建MDI Swing GUI时,我有许多JinternalFrame,它们被添加到JFrame中的JDesktopPane中。我在initComponents方法之后,通过在构造函数中添加setVisible(false)使这些内部帧不可见(因为GUI生成器会自动在该方法中设置这些帧可见) 在运行时,用户可以通过调用调用setVisible(true)和setVisible(false)的侦听器来选择打开和关闭JinternalFrame,具体取决于帧的当前状态。我喜欢使用此设计时内部框架的

在创建MDI Swing GUI时,我有许多JinternalFrame,它们被添加到JFrame中的JDesktopPane中。我在initComponents方法之后,通过在构造函数中添加setVisible(false)使这些内部帧不可见(因为GUI生成器会自动在该方法中设置这些帧可见)

在运行时,用户可以通过调用调用setVisible(true)和setVisible(false)的侦听器来选择打开和关闭JinternalFrame,具体取决于帧的当前状态。我喜欢使用此设计时内部框架的先前位置和状态保持不变。然而,有些事情告诉我,这肯定是非常错误的,尽管我还没有看到任何缺点


所以,我的问题是:这是一个糟糕的设计吗?

在一个(MDI)环境中,这种方法是非常合理的。此外,您可以使用
JInternalFrame
方法
setSelected()
高亮显示特定帧。为了便于导航,可以在
操作中使用此方法和其他方法,如图所示。

如果有任何问题,我认为最好记住JinternalFrame的位置。一个缺点是,如果用户调整了JDesktopPane的大小,JInternalFrame可能完全看不见(也就是说,超出了JDesktopPane的可见边界),因此在使JInternalFrame可见时,您可能需要检查这一点。或者,您也可以像Windows3.1那样简单地退出,并提供“平铺”和“层叠”菜单功能。