我的 java swing 应用程序中有大约 3 帧。如何处理这些帧的正确方法是什么?我的意思是某种模式或其他东西。现在我总是有一个代表框架的类和一个代表这个框架中的主要面板的类。现在我已经将框架定义为静态变量,当我想隐藏它们时,我调用
classname.frameName.setVisible(false);
这是正确的解决方案吗?
我的 java swing 应用程序中有大约 3 帧。如何处理这些帧的正确方法是什么?我的意思是某种模式或其他东西。现在我总是有一个代表框架的类和一个代表这个框架中的主要面板的类。现在我已经将框架定义为静态变量,当我想隐藏它们时,我调用
classname.frameName.setVisible(false);
这是正确的解决方案吗?
看看一个不错的对接框架,比如MyDoggy。这允许您在单个 中显示所有三个组件JFrame
,但非常灵活,因为您可以并排查看数据、调整组件大小和最大化组件。
这个设计似乎有缺陷。您应该使用适当的布局管理器,而不是拥有多个容器。在这种情况下,我建议使用CardLayout
. 这样,您将拥有一个带有多个可交换视图的容器。
通过静态引用控制帧似乎是一个非常脆弱的解决方案。如果引用为空怎么办?如果框架在setVisible()
被调用时未处于完成状态怎么办?
将这个逻辑分离到一个单独的类中并让框架注册到它,或者预先构建所有内容可能是一个更好的主意。
除了一个
CardLayout
或JFrame
多个JDialog
实例的(优秀)建议之外,这里还有一些其他策略,它们可以单独或组合使用,将各种内容窗格折叠到一个框架中。JDesktopPane
/JInternalFames
(啧)。JSplitPane
(啧。)。JTabbedPane
(啧。)。JLayeredPane
,如果你觉得勇敢(Tut.)。JToolBar
- 如果需要,可漂浮(啧)。JPanel
中 a 的不同约束。应该还有更多..
当然,正如亚当斯基指出的那样,还有一些需要考虑的怪癖。
可能将它们组合为子菜单。