use*_*297 4 java user-interface swing jframe layout-manager
想想经典的安装过程,你有一个"下一步"按钮,当你点击它时,窗口的内容会发生变化.为了表示这种情况,我想到了两种可能的解决方案
- 当单击"下一步"时,销毁当前的JFrame并创建一个新的JFrame,可能会传递给他的构造函数有用的信息(例如实际窗口大小,用户在当前帧中插入的内容,......)
- 单击"下一步"时,从当前JFrame中删除所有组件,并根据需要添加新组件
第一个解决方案在OOprogramming方面看起来更好,因为我可以为不同的帧保留单独的类,我可以避免使用巨大的方法清空帧并重新填充它.然而,第一个解决方案听起来有点"脏",我应该将大量参数传递给新帧.为了表示这种情况,我会选择第二种解决方案.
现在考虑一个带有"选项"组件的菜单:在这种情况下,我会在单击"选项"时创建一个新的JFrame,这样我就可以用选项来填充它.这是正确的解决方案吗?有没有办法让我总能知道哪一个是最好的解决方案?有没有我没想过的解决方案?
摧毁主要部分JFrame将是愚蠢的 - 更不用说为用户提供刺激.只需使用一个JFrame并更改其内容.
要实现安装程序向导,请使用一个JFrame包含一个大JPanel的顶部和一个较小的安装向导,底部包含"Next","Back","Cancel"按钮.当Next或Back按下按钮,您更换大JPanel.您可以拥有许多不同的JPanel子类,每个子类对应一个向导的"页面".
有一个LayoutManager被调用CardLayout,它是实现这种情况的理想选择 - 它管理组件的"堆栈",并且一次只显示其中一个组件.使用BorderLayout中JFrame.进入中心位置放JPanel一个CardLayout.然后将向导的各个页面添加到该页面JPanel,以便CardLayout管理它们.