在Java Swing中切换屏幕

4
我曾经为我的客户在Android平台上开发了一个大型应用程序。现在,我需要使用Java在PC上重新构建同样的应用程序。因此,我开始使用swing进行开发。在Android中构建应用程序时,我使用包含内容视图的活动类,并且可以在它们之间切换。在Java中,我已经建立了多个扩展JFrame的类,我希望能够在它们之间进行切换。正确的方法是什么?
new_class.setVisible(true);
old_class.setVisible(false);

正确的方式?

2个回答

9
使用Swing的一般方法是将所有GUI元素“屏幕”组合在一个顶级容器中,使用适当的策略(通常是CardLayout,但细节决定成败)。 此GUI显示了其他选项(JSplitPane和嵌套布局): 还可以参见这个答案,以获取许多其他替代方案。
对于任何其他逻辑上应该在不同容器中的功能,请使用(可能是)模式对话框或JOptionPane。 例如从主框架弹出的登录
另一件要考虑的事情是,Swing(使用桌面监视器)允许我们向用户提供更丰富的组件集。 例如,浏览Android SD卡文件系统通常通过每个目录使用一个列表来实现,并在进入新目录时更改列表或视图的内容。 在Swing中,您可以使用单个JTree。 因此,在桌面GUI工具包中,减少了“不同屏幕”的需求,而设计用于平板电脑或手机的GUI工具包则需要更多。
文件浏览器中使用的树如下所示:

1
CardLayout,但魔鬼在细节中。+1,我看不出与动态添加/删除JPanels相比有什么显著的区别。 - mKorbel
1
@mKorbel 抱歉,我从来没有考虑过“添加/删除”,但是还有其他大约十几种可能性。不过,使用情况确实非常适合CardLayout,这一点我得承认。 - Andrew Thompson

0

正确的方法是从这些 JFrames 创建实例并设置其可见性。

 new Fram1().setVisible(true);

 new Fram2().setVisible(true);

2
请查看使用多个JFrames,好的/坏的做法? - Andrew Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接