Hello,
我已经编写 Swing 应用程序很多年了,很多人发现
优雅的。我教开发人员如何有效地使用 Swing:如何
构建和组装应用程序,如何绑定和验证日期,
以及如何寻找、设计、布局和实施精心设计的
Swing 中的屏幕。
我想说的是,网上没有关于 Swing 的“最佳实践”。和
我怀疑任何人都可以提供“最佳”实践,因为那会
需要 Swing 开发人员和解决方案提供商之间进行讨论
关于方法,哪些技术上行之有效,哪些易于实施
理解并与之合作。此外,最佳实践将解释谁可以
达到什么结果质量,他们会描述生产
时间和生产成本;但我永远找不到这些信息
在线或在 Swing 书中。
在我看来,缺乏良好的实践和如何构建的信息
Swing 应用程序是开发人员在开始时面临的最大障碍
摇摆。与我合作的大多数开发人员在寻找设计方面都很缓慢,
实现布局、构建面板、绑定数据、处理事件,
并安排不同的代码部分和代码层。还有很多摇摆
我见过的应用程序很糟糕;除了糟糕的视觉设计之外,他们
很难理解,即使是很小的改变也会付出很大的代价。通常
开发人员不知道在哪里放置什么代码?如何分离
关注点?,如何将事物联系在一起?,如何与操作一起工作?,如何
启动应用程序?以及如何存储和恢复 UI 状态?最多
开发人员缺乏可遵循的指导方针。
但我发现普通开发人员可以很好地使用 Swing,如果
仅需手工拍摄 - 大约 3 至 10 天。几乎你所有的
问题可以通过代码、库、
应用程序架构、模式、一般编程实践、
精心设计的示例、教程等。我教的是Swing开发
围绕 3 层架构构建的流程将
域、工具和表示层,并且基于高效的
布局系统。尽管大部分部分都是通过编程完成的
开发人员可以快速获得结果,无论是代码还是视觉设计
变得相当一致。这可以提高开发人员的生产力
很多——在某种程度上,Swing 工作需要的时间明显更小
项目工作的一部分。
所以,你可以做什么?我强烈建议学习 Martin Fowler 的
进一步的“企业应用程序架构模式”草案。
我发现这些模式与 Swing 和 Swing 配合得非常好
团队 - 即使是刚接触 Swing 和 Swing 的开发人员
建筑学。我会首先选择以下模式:“演示
模型”、“分离域”和“分离表示”。我个人
支持演示模型(Smalltalkers 的应用模型),
超越模型-视图-演示者模式 (MVP)。然而,MVP是真正的
和经过充分研究的替代方案。
Fowler 的模式可以与 3 客户端层架构相结合
对于中等规模的 Swing 应用程序来说可以很好地扩展。它包含
由领域层、表示层和中介模型层组成。
我在数据绑定演示中概述了此体系结构。
基于 MVP 的应用程序也可以在这 3 个客户端层中构建。
Swing应用程序的一个关键任务是数据绑定:如何连接
Swing 组件的域对象和域对象属性。
基本上你可以来回复制你的数据,或者建立链
从域对象到 UI 组件的适配器。复制
方法很容易理解,通常是那些人的首选
对 Swing 或数据绑定不熟悉的人;我想说这是一个不错的选择。
另一方面,复制使同步视图变得更加困难。
适配器链和自动或半自动更新可以
显着减少绑定域数据所需的代码量
到用户界面。缺点是,这种方法更难实现
理解。正如您所指出的,Swing 没有提供很好的抽象
用于绑定文本的可重用且灵活的模型
领域;文档接口不适合通用数据
使用权。有一些库可以提供 ValueModel
接口只是为了添加一个通用的、强大的、
单值数据的灵活模型:字符串、布尔值、数字、
日期等
我不知道有一本 Swing 书籍能够解释真正的 Swing 应用程序
发展过程。理想情况下,这样一本书将结合这些模式,
上面提到的架构和数据绑定技术
描述如何在 Swing 中实现它。无论如何,还有一个10岁的孩子
Smalltalk 应用程序开发过程的文档
就是这么做的。 Oracle 的 JClient 架构和文档不是
完整但对于 Java 开发人员来说可能更容易阅读。我提供
关于数据绑定的演示,其中涉及 Fowler 模式,
3 层架构和这些模式的 Swing 实现
自动数据绑定。我的 Binding 库的教程来源
可以帮助您熟悉适配器链和 ValueModel
界面。 MVP 模式的最佳文档可以在以下位置找到:
Dolphin Smalltalk 文档。
一旦您选择了架构和桌面模式集,您就可以
应该解决以下更基本的 Swing 任务: 1) 改进
外观通过选择一套专业的look&feeling合适
对于您的目标平台集,2) 选择一个可以帮助您的布局系统
快速构建设计良好且一致的屏幕,3) 选择数据
验证解决方案,以及 4) 获取一包日常 Swing 解决方案
任务。
有几个项目概述了 Swing 架构,
解决数据绑定和典型的 Swing 任务,例如:Sun 的
JDNC、Oracle 的 JClient/ADF、Spring RCP、NetBeans 平台。我
提供基于 Swing 解决方案的商业套件
开源 JGoodies 库并添加了一包解决方案和源代码
适用于所有公共 JGoodies 工具和演示。这些来源旨在
解释如何将上述所有问题联系在一起。
让我添加关于所谓的“MVC”框架的标准警告。摇摆
不使用 MVC,它使用修改后的模式。 MVC 经常
被错误引用和误解——尤其是在 Swing 的背景下。
此外,MVC 适合 UI 组件,而不适合应用程序。因此我
建议寻找反映的概念、解决方案和库
并使用 Swing 架构,而不是 MVC。
MVC 模式的发明者社区介绍了
ApplicationModel(现在称为Presentation Model)1993年左右; MVP
稍后跟随。在我看来,这两种模式更重要
对于 Swing 比 MVC 有用。最近的环境带来了
向更多受众展示的演示模型模式转向了新的模式
建筑:“波洛克”。有兴趣的读者可以google一下看看是如何实现的
与经常结合的适配器链不同
演示模型。
最后但并非最不重要的一点是个人陈述。我可以更好地工作
Swing 与我之前使用过的其他工具包或框架相比;我可以
用更少的代码做更多的事情,代码结构更好,更容易
坚持下去,我很快就能得到结果。
希望这可以帮助。最好的问候,卡斯滕·伦茨施
参考文献:福勒的进一步模式 -http://martinfowler.com/eaaDev http://martinfowler.com/eaaDev数据绑定演示 -http://www.jgoodies.com/articles/ http://www.jgoodies.com/articles/Smalltalk 应用程序开发流程 -http://www.cincom.com/downloads/pdf/AppDevGuide.pdf http://www.cincom.com/downloads/pdf/AppDevGuide.pdfMVP模式
文档 -http://www.object-arts.com/EducationCentre/Patterns/MVP.htm http://www.object-arts.com/EducationCentre/Patterns/MVP.htmSun 的 JDNC
项目首页-http://jdnc.dev.java.net/ http://jdnc.dev.java.net/Oracle 的 ADF 常见问题解答 -http://www.oracle.com/technology/products/jdev/htdocs/905/adffaq_otn.html http://www.oracle.com/technology/products/jdev/htdocs/905/adffaq_otn.htmlSpring RCP 项目主页 -http://www.springframework.org/spring-rcp.html http://www.springframework.org/spring-rcp.htmlNetBeans 平台主页
-http://www.netbeans.org/products/platform/ http://www.netbeans.org/products/platform/JGoodies 摇摆组曲 -http://www.jgoodies.com/products/index.html http://www.jgoodies.com/products/index.html