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

问题描述:

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

+2

我在显示器(或:GraphicsEnvironment,GraphicsDevice)中感受到你并不是指“屏幕”。 也许有点澄清你究竟是什么意思屏幕? – 2012-07-24 21:06:14

+0

我认为这可能有点混乱,但不知道如何最好地说出来。这就像当你在安装向导中一样,你点击“下一步”或“后退”按钮,窗口内的所有内容都会改变。每一个单独的东西都是我正在考虑的屏幕。你点击“下一步”,它会带你到下一个“屏幕”。我真的不知道如何描述它。 – 2012-07-25 02:51:19

+0

感谢您的澄清,我添加了一个答案,我希望得到你想要的。 – 2012-07-25 08:56:47

中描述的步骤,根据你对原始问题的第二个评论,我认为最好是看看使用面板。

看看使用多个面板的每一个活动,你想:

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

可能是我见过的最深入的答案。谢谢! – 2012-07-27 01:10:36

看看的Actions framework,它的开发再利用

普通级别操作的好方法。如果屏幕的状态取决于前一屏幕的状态(例如像一个向导),你可以按照this article