如何在Swing中创建单独的屏幕?

时间:2012-07-24 21:01:53

标签: java swing

我不断发现自己正在构建有多个屏幕的程序。例如,考虑一个程序,其中初始布局提供两个按钮:创建文件或编辑文件。点击一个,它会将用户带到一个新的屏幕,支持他们按下的任何按钮。然后他们点击后退按钮,然后将它们带回程序的主屏幕。我想知道如何最好地做这样的单独菜单。是否最好只创建设置每个屏幕的单独方法,然后在单击按钮(如“后退”按钮)时调用相应的方法?这就是我想要做的事情,但是看到有很多方法可以做到这一点,我希望得到一个更好的方式来改变显示的屏幕。 谢谢,AJ

3 个答案:

答案 0 :(得分:2)

根据您对原始问题的第2次评论,我认为最好使用Panels。

查看为所需的每项活动使用多个面板:

JPanel firstPanel = new JPanel();
JPanel secondPanel = new JPanel();
JPanel thirdPanel = new JPanel();

确保初始化时隐藏所有面板,然后使用以下方法在按钮单击事件时将面板换成另一个面板:

firstPanel.hide();
secondPanel.show();

根据您使用的布局,还有其他技术。例如,如果您使用BorderLayout而不是删除和添加(或显示和隐藏多个面板),您可以简单地用另一个面板“替换”BorderLayout区域,然后重新验证:

container.add(BorderLayout.CENTER, thirdPanel);
container.validate();

另请注意,不同的操作系统(Windows,Mac等)将具有他们希望遵循的不同样式。例如,您提到了典型的Windows安装程序;人们已经开始期望安装程序以某种方式查看和工作,但在不同的操作系统上,存在完全不同的期望和外观。

进一步阅读:

Tutorial on using panels

Java SE 7 (JPanel API)


修改

  

我想知道如何最好地做这样的单独菜单。最好只创建设置每个屏幕的单独方法,然后在点击按钮(如“后退”按钮)时调用适当的方法吗?

这取决于个人喜好。你想在启动时初始化所有内容并在面板之间进行更快速的交换(或者你称之为“屏幕”),或者你想要一个更快的初始启动,并且当你需要它时,基本上每个组件都有“延迟加载”

我个人在初始化期间选择了所有内容(除非在应用程序启动期间有很多事情要做或加载)。这实际上取决于个人偏好。


另一个修改: 谈到布局,也许不同的布局风格也会帮助你,比如:

CardLayout tutorial

希望这有所帮助。

答案 1 :(得分:1)

看看Actions framework,这是开发共同级别操作以便重复使用的好方法

答案 2 :(得分:1)

如果屏幕状态取决于上一个屏幕的状态(例如,在向导中),您可以按照this article

中描述的步骤进行操作