其实,你在寻找最终的帖子是 这样回答
这个答案
从卡斯滕Lentzsch共同领导(JGoodies数据的名望)在秋千框架和最佳实践
旋启式框架和最佳实践
主题。
你好,
多年来,我一直在编写Swing应用程序,很多人都觉得它很优雅。我还教开发人员如何有效地使用Swing:如何构造和组装应用程序,如何绑定和验证日期以及如何在Swing中查找,设计,布局和实现设计良好的屏幕。
我想说的是,Swing在网上没有“最佳实践”。而且我怀疑任何人都不能提供“最佳”实践,因为这将需要Swing开发人员和解决方案提供商之间就方法,技术上可行的,易于理解的和可使用的方法进行讨论。另外,最佳实践将解释谁可以达到什么结果质量,并描述生产时间和生产成本;但我永远无法在线或在Swing书中找到这些信息。
我认为,缺乏良好的实践经验和信息,如何构建Swing应用程序是开发人员从使用Swing开始时面临的最大障碍。我与之合作的大多数开发人员在寻找设计,实现布局,构建面板,绑定数据,处理事件以及安排不同的代码部分和代码层方面都很缓慢。我见过的许多Swing应用程序都很烂;除了视觉设计不佳之外,它们还难以理解,即使很小的改动也要付出很多代价。通常,开发人员不知道在哪里放置什么代码,如何将关注点分开,如何将事物捆绑在一起,如何与Actions一起使用,如何启动应用程序以及如何存储和恢复UI状态?大多数开发人员缺乏遵循的指南。
但是我发现,即使仅靠手工 *** 作,普通开发人员也可以在大约3到10天内与Swing配合良好。您的几乎所有问题都可以通过代码,库,应用程序体系结构,模式,通用编程实践,精心设计的示例,教程等来回答或解决。我讲授了围绕3层体系结构构建的Swing开发过程。基于生产布局系统将域,工具和表示层分开。即使大多数部分都以编程方式完成,开发人员也可以快速获得结果,并且代码和视觉设计都变得相当一致。这可以极大地提高开发人员的生产率-
在某种程度上,Swing工作只占项目工作的一小部分。所以,你可以做什么?我强烈建议研究Martin
Fowler的草案,以进一步了解“企业应用程序体系结构的模式”。我发现这些模式在Swing和Swing团队中非常有效-
即使对于Swing和Swing架构的新开发人员也是如此。我首先选择以下模式:“演示模型”,“分离域”和“分离演示”。我个人更喜欢Presentation
Model(Smalltalkers应用模型),而不是Model-View-Presenter模式(MVP)。但是,MVP是一个经过充分研究的真实选择。Fowler的模式可以与3客户端层体系结构结合使用,该体系结构可以很好地扩展到中等规模的Swing应用程序。它由域层,表示层和中介模型层组成。我已经在数据绑定演示中概述了此体系结构。基于MVP的应用程序也可以在这三个客户端层中构建。
Swing应用程序的关键任务是数据绑定:如何将域对象和域对象属性连接到Swing组件。基本上,您可以来回复制数据,也可以将适配器链从域对象构建到UI组件。复制方法易于理解,通常是Swing或数据绑定新手的首选。我会说这是一个不错的选择。另一方面,复制使同步视图变得更加困难。适配器链和自动或半自动更新可以大大减少将域数据绑定到UI所需的代码量。缺点是这种方法很难理解。如您所指出的那样,Swing对于可用于绑定文本字段的可重用且灵活的模型并没有提供很好的抽象。document接口不适用于常规数据访问。有一些库可提供ValueModel接口,该接口仅用于为单值数据添加通用,强大且灵活的模型:字符串,布尔值,数字,日期等。
我不了解解释真正的Swing应用程序开发过程的Swing书。理想情况下,这样的书将结合上面提到的模式,体系结构和数据绑定技术,并描述如何在Swing中实现它。无论如何,Smalltalk应用程序开发过程已有10年的历史。Oracle的JClient体系结构和文档还不够完善,但对于Java开发人员来说可能更容易阅读。我提供了有关数据绑定的演示,涉及Fowler模式,三层体系结构以及这些模式的Swing实现和自动数据绑定。我的绑定库的教程资源可以帮助您熟悉适配器链和ValueModel接口。
选择了架构和桌面模式集之后,您应该解决以下更基本的Swing任务:1)通过选择一组适合您目标平台集的专业外观来改善外观,2)选择可以帮助您的布局系统快速构建设计良好且一致的屏幕,3)选择数据验证解决方案,4)抓取一揽子解决方案以应对日常的Swing任务。
有几个项目概述了Swing架构,解决了数据绑定和典型的Swing任务,例如:Sun的JDNC,Oracle的JClient / ADF,Spring
RCP,NetBeans平台。我提供了一个基于开源JGoodies库的Swing解决方案商业套件,并为所有公共JGoodies工具和演示添加了解决方案和资源包。这些资料旨在说明如何将上述所有问题联系在一起。让我添加有关所谓的“ MVC”框架的标准警告。Swing不使用MVC,而是使用修改后的模式。MVC经常被错误引用和误解-
特别是在Swing的上下文中。此外,MVC适用于UI组件,而不适用于应用程序。因此,我建议寻找能反映并使用Swing体系结构而不是MVC的概念,解决方案和库。MVC模式的发明者社区在1993年左右引入了ApplicationModel(现在称为Presentation
Model)。MVP随后进行了跟进。在我看来,这两种模式对Swing而言比MVC有用得多。最近,将Presentation
Model模式带给更多观众的环境转向了新的体系结构:“ Pollock”。感兴趣的读者可以在Google上搜索以了解与通常与Presentation
Models组合在一起的适配器链有何不同。最后但并非最不重要的个人声明。与以前使用的其他工具箱或框架相比,我可以更好地使用Swing。我可以用更少的代码来做更多的事情,代码的结构更好,更易于维护,而且我很快就能得到结果。
希望这可以帮助。最好的问候,Karsten Lentzsch
参考:Fowler的进一步模式-http
://martinfowler.com/eaaDev 数据绑定演示 -http
: //www.jgoodies.com/articles/
Smalltalk应用开发过程-http: //www.cincom.com/downloads/pdf/
AppDevGuide.pdf
MVP模式文档- http://www.object-
arts.com/EducationCentre/Patterns/MVP.htm Sun的JDNC项目主页-
http://jdnc.dev.java.net/ Oracle的ADF常见问题-
HTTP:/
/www.oracle.com/technology/products/jdev/htdocs/905/adffaq_otn.html
Spring RCP项目主页 -http:
//www.springframework.org/spring-
rcp.html
NetBeans平台主页-http:// www。
netbeans.org/products/platform/
JGoodies Swing
Suite-http://www.jgoodies.com/products/index.html
如果您不认识Karsten和JGoodies,那么请相信我,这个人真的知道他在说什么。我热烈建议仔细阅读他的回答 和
他发布的材料作为参考。更具体地说,一定要检查他的“ 桌面模式和数据绑定”
演示。令人惊讶的是,我更喜欢旧版本而不是新版本。
让我引用他关于MVC和MVP的幻灯片:
- 是的, Swing 在内部使用了 扩展 形式的MVC
- 但是 MVC用于组件,MVP用于应用程序
然后从摘要:
将域与演示文稿分开!
那是 分开的介绍 。单独的 自主视图( 如果适用)
- 选择 MVP 或 演示模型
~~~~
- 摆动使 演示模型更 容易
- PM需要绑定解决方案
但是在解释这一点上,我做不了比卡尔斯滕更好的工作,我充其量可以这样解释。所以就读他!
也可以看看用于学习的Desktop Java演示 (更准确地说是Scott
Violet的答案)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)