如何构建Swing应用程序

rhb*_*brb 7 java user-interface swing

我对摇摆或GUI设计一般没有多少经验(大学里的一些WPF应用程序的高度很高),但是我的任务是在工作中重构部分循环遗留应用程序.

我被要求重构的部分围绕一个弹出窗口,该窗口可以根据特定的值对象以三种不同的格式显示.这3种不同的格式都共享一些基本字段,然后有条件地确定其他格式.负责这个GUI元素的类长约5k,我认为它应该分成三个子类,基类中的共享内容都可以扩展.但是我绝对不知道这是否是正确的方法.

任何人都可以强调一些用于处理不同摆动组件的策略,这些组件共享按钮/字段等元素吗?

此外,是否有任何大型OSS摇摆应用程序可用于学习?

更多信息:我正在处理的应用程序是一个庞大的遗留应用程序,目前相当可怕的结构.我是团队的新手(也是一个相当近的毕业生,因此在这个领域没有太多的经验)并且被要求尝试分解一个负责显示此弹出窗口的巨大课程更小的可维护组件.实际上,应用程序中有一个弹出窗口允许用户响应某些事件,这有三种不同的外观,具体取决于他们需要响应的请求的子类型.很大一部分GUI元素在所有三种子类型中是一致的,因此我很想知道继承是否是这里最好的方法还是有其他策略来处理这个?

Gil*_*anc 15

阅读评论,我想我可以回答这个问题.一个真正的答案需要一本书.

  1. 将GUI分解为JPanel描述GUI所需的嵌套数量.一个简单的嵌套JPanel了使用BorderLayout优选的是一个复杂的JPanel,它使用一个GridBagLayout.要清楚,我不是批评a GridBagLayout.它在创建表单时很有用.但它不是唯一的Swing布局管理器.

  2. 将每个嵌套JPanel放入自己的类中.

  3. 使用Swing组件时使用组合.当且仅当您的类将覆盖其中一个JComponent方法时才使用继承.

  4. 每一个JPanel都有自己的JButton,JLabel等部分组成. JBUttonA定义为JPanelA,JButtonB定义为JPanelB,即使GUI的用户认为它们是相同的按钮.您可以通过创建包含标签和按钮文本的GUI模型来最小化重复.您必须通过编写A和B可以执行的公共ActionListeners来消除动作代码的重复(按下按钮时执行的代码).JButtonJButton

  5. Swing应用程序必须以调用方式开始SwingUtilities.invokelater().这可确保在Event Dispatch线程(EDT)上定义和使用Swing组件.

  6. 只有一个 JFrame是在Swing应用程序中使用.

  7. 每个JPanel 必须定义一个Swing布局管理器.

  8. 某些组件,如JList和JTable,在封装在一起时效果更好JScrollPane.

我敢肯定我已经忘记了一些事情,但这应该是一个好的开始.

  • 包含 Gui、Main、Frame 和/或项目名称(如果它是 Gui-heavy)的东西。确保有一个项目实习生的命名约定。 (2认同)