使用2个或更多帧

我的java swing应用程序中有大约3个帧。 如何处理这些框架的正确方法是什么? 我的意思是一些模式或其他东西。 现在我总是有一个表示框架的类和一个用于面板的类,它是该框架中的主要部分。 现在我将帧定义为静态变量,当我想隐藏它们时,我调用classname.frameName.setVisible(false);

这是正确的解决方案吗?

除了具有多个JDialog实例的CardLayoutJFrame的(优秀)建议之外,这里还有一些可以单独或组合工作的其他策略,以将各种内容窗格折叠成单个帧。

  1. JDesktopPane / JInternalFames ( Tut。 )。
  2. JSplitPane ( Tut。 )。
  3. JTabbedPane ( Tut。 )。
  4. JLayeredPane ,如果你感到勇敢( Tut。 )。
  5. JToolBar – 如果需要可浮动( Tut。 )。
  6. 嵌套布局中 JPanel不同约束。

可能还有更多……


当然,正如亚当斯基指出的那样,还有一些需要考虑的问题。

如果每个框架都有JMenuBars或JMenus怎么办?

可能将它们组合为子菜单。

看一下体面的对接框架,比如MyDoggy 。 这允许您在单个JFrame显示所有三个组件,但非常灵活,您可以并排查看数据,resize和最大化组件。

这种设计似乎有缺陷。 您应该使用适当的布局管理器,而不是拥有多个容器。 在这种情况下,我建议使用CardLayout 。 这样,您将拥有一个具有多个可交换视图单个容器

通过静态引用控制帧似乎是一个非常脆弱的解决方案。 如果引用为空怎么办? 如果在调用setVisible()时帧未处于完成状态会怎么样?

将这个逻辑分离成一个单独的类并且让帧自己注册到它,或者预先构建所有内容可能是一个更好的主意。