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