有没有一些关于Swing GUI设计的资源,例如最佳实践等等可以解释一下?
因为Swing可以在许多不同的平台上运行,所以设计指南并没有被严格遵守。Sun公司早些时候写了一些指南,但从未更改过,如果你认为这有帮助,可以阅读一下。以下是一些关于进行Swing开发的实用知识。
每个GUI元素(如JPanel、JDialog等)都有一个类。
为每个屏幕使用单独的包,特别是如果您必须实现自定义的TableModels或其他复杂的数据结构。
不要使用匿名和内部类,而是实现ActionListener并在其中检查ActionEvent.getActionCommand()。
编辑:如果您更想要教程或介绍,可以从这里开始。
我也有一些指南:
1)使用Maven将应用程序分成模块(视图,控制器,服务,持久性,实用程序,模型)。确保您仅将Swing组件和依赖项放在视图包中,因此如果您想改变视图框架,您只需重新实现视图模块,但可以保留业务逻辑,控制器等不变。
2)使用GridBagLayout,因为它非常灵活且可配置性最高
3)使用SwingTemplate(如果需要,我可以给您提供一个示例)
4)创建一个SwingFactory来创建组件,以便您可以减少代码行数,因为JFrames或其他意图成为非常大的类...
5)让视图(JFrame,JDialog等)依赖于控制器。仅在JFrames上验证输入,然后将参数传递给控制器。他们将决定触发哪些业务逻辑(服务,处理器等...)。
6)使用大量枚举
7)始终考虑应用程序如何更改或如何维护。因此,始终针对接口或抽象类编写代码。(思考抽象)
8) 在您的应用程序中使用设计模式,因为它们提供了代码的舒适性和可维护性。例如,将所有控制器、服务、DAO的类设置为单例类。创建工厂(SwingFactory等),这样您就不必一遍又一遍地编写重复的代码...使用观察者,以便自动处理操作。
9) 测试您的应用程序:在TDD(测试驱动设计)或DDT(设计驱动测试)之间做出选择。
10) 永远不要将任何业务逻辑放在JFrames上,因为这很丑陋,也不是非常符合模型-视图-控制器设计。JFrames对数据的处理方式不感兴趣。
希望这有所帮助。