在Eclipse/SWT或Netbeans/Matisse之间,Java GUI编辑器在快速开发和可维护性方面提供了什么?
你真的在问两个不同的问题:SWT vs Swing,以及Eclipse GUI Editor和Netbeans GUI Editor(Matisse).
首先,SWT和Swing之间的区别在于它们是两个根本不同的GUI库.这类似于要求区分Tk和Win32,或Java Swing vs .NET Forms(不是说SWT是.NET).有很多关于SWT与Swing讨论的讨论 - 我不太了解SWT总结这些差异.
首先,让我说我偏向于支持Netbeans,我花了10年时间学习IDE作为Forte.
就GUI编辑器而言,Eclipse和Netbeans具有功能相似的产品,但以非常不同的方式实现代码.
我的观察是Matisse的行为,功能和产生的代码让人联想到Visual Studio .NET代码.某些对象(例如JTable)有明确的初始化部分和自定义行为.您可以"自定义"一个对象,并通过GUI编辑器轻松添加您自己的任意代码,从初始化到设置各个属性.对于事件处理,它默认使用匿名内部类并调用独立方法在.NET中复制"委托".GUI编辑器本身提供对表单对象模型的详细访问,并具有丰富的自定义集.您还可以自由地将非GUI bean放入表单以供GUI组件使用,例如模型(tablemodel,listmodel等),JPA相关对象,Workers等.过去用手工编码的SWING生产一周需要花一天时间与马蒂斯(虽然你必须真正学习马蒂斯这样做).如果您已经手动编码摆动多年,那么重新学习使用GUI编辑器实际上将是一个漫长而艰难的期望.
该代码在马蒂斯内部具有高度可维护性; 它不打算在Matisse之外进行编辑,但如果需要,代码适合编辑(我知道许多人使用Netbeans GUI,然后将源复制到Eclipse中).
Eclipse GUI编辑器是一个非常不同的生物.GUI编辑器在整体能力方面大致相同,但我发现它们不那么精致.布局功能大致相同,但有时错误的容忍度稍差.一些自定义需要我直接转到源文件并编辑文件,而不是通过GUI访问代码自定义.产生的代码与马蒂斯截然不同.GUI组件通过"getters"添加和初始化,并分散在整个文件中; 这很好,因为每个组件都被隔离/分组到一个函数中,但是当您需要诊断组件初始化之间的错误交互时很麻烦.事件处理程序也是如此 - 与matisse非常不同.
Eclipse也没有提供任何保护来编辑/破坏/篡改生成的GUI文件,因为Netbeans几乎对其保护措施感到厌恶.就可维护性而言,Eclipse代码可能更接近于人类生成Java代码的方式......就个人而言,我发现它生成的代码更难维护,但我一直在关注Matisse生成的代码beta所以我的观点在这个问题上并不客观.
Netbeans还具有使用相同编辑器构建Swing框架应用程序,Netbeans RCP等的能力......我不确定Eclipse是否也这样做.