Eclipse并不自带GUI的可视化开发工具,那么如果要在Eclipse进行可视化的GUI开发,就需要依靠第三方的插件。
Eclipse官方提供了一个叫做Visual Editor(VE)的开源GUI插件,功能还是比较强。可以根据用户的界面GUI设计,自动生成相应的JAVA代码。同样也可以通过相应的JAVA代码,生成其匹配的可视化GUI编辑界面。不过VE缺点比较大,我从3.1到3.2之前一直在用VE,没有多少改观。VE是通过另外启动一个JVM来模拟执行GUI的class,然后在Eclipse的界面内生成一个可视化效果。
回顾一下Visual C++,NetBeans等其它IDE进行GUI可视化的方法,都是基于另外一个界面管理资源文件,非用户可以直接修改的。而直接通过程序代码来管理可视化的GUI编辑器,就需要极强的代码parse能力。很可惜,VE想这样做,确没有能够做到。
VE使用起来问题很多,网上有网友直接评价说VE是“可用性不强”。我自己用起来的感觉,问题就出在一下几个方面:
1). 另外启动JVM速度很慢,而且如果要同时打开几个Visual Class,那么就要启动几个JVM,内存消耗也大。而且,有些时候,反复打开关闭一个Visual Class,JVM还启动不起来。
2). 对于用户自己编辑的可视化Java代码的parse能力很弱。常见的错误就是,明明是正确的可视化GUI代码,但是VE里面窗口打开半天,结果只能显示一把叉。很多时候,就根本不能显示出一个完整的可视化窗口。而对于窗口上某个控件的定位能力不强,用户自己的代码稍微转几道弯儿,VE就不知道这个控件是在哪里产生的了,顶多只能显示出来,但是无法可视化编辑。
4). 3.1的VE编辑的代码到了3.2的VE里面,显示出来完全不一样了。
5). 安装比较麻烦,还需要用户自行去安装不只一个的辅助插件。
综上所述,VE真的“可用性不强”
SWT-Designer是大家公认的,最强的Eclipse下开发GUI的插件http://www.swt-designer.com/。很多Eclipse书籍上都是直接拿SWT-Designer来讲解如何在Eclipse开发GUI界面程序。不过SWT-Designer是一个收费的插件。不收费的是基础版本,功能受到很大的限制。当然,网上也有完整版的破解版。SWT-Designer做得比较大,6.0最新的安装文件有几十M,可想其功能之强大。
jigloo严格意义上来说也是收费的,不过他提供了non_commercial的版本,而这个版本的功能和commercial是完全一样的http://www.cloudgarden.com/jigloo/。作为个人开发来说,是不受限制的。jigloo很小,最新的版本才3MB多,安装也比较简单。
jigloo同时支持SWT和Swing。
jigloo也是完全基于Java代码的,不过它的code parse的能力远比VE要强,也要快。至少我很多在VE下出现问题,不能显示的Visual Class可以很好地在jigloo下编辑,至今还没有遇到jigloo不能编辑,parse出错的时候。而jigloo还可以集成了一写比较好的Java GUI风格代码的支持,功能上比VE要强大一些。
当然,3MB多的插件,再强也强不过SWT-Designer完整版的,但是比其基础版的要好很多。而SWT-Designer也并不是完全基于JAVA开发的,比如Windows版本的,还携带了dll文件。而jigloo是完全基于JAVA开发的,下载下来只有一个class的zip文件,也支持Eclipse的在线安装。
jigloo的安装很简单,和其它Eclipse插件一样,不需要任何安装程序,直接解压出来就行了。
创建新的窗口,直接输入File->New->Others->GUI Forms就可以了。
而如果要打开一个已经存在的Visual Class,可以直接右键点击,选择Open With->Form Editor打开就可以了。打开后,首先要进行code parse,不过这个速度很快,也不需要像VE那样还启动一个JVM。
根据3大Eclipse的GUI开发插件可以看出,基本都是基于Java code的GUI编辑管理。这种编辑器管理,当然就比以前Visual C++那样管理Windows界面程序要困难很多。但是,现行的很多IDE,比如Visual Studio .NET,2005都还是能够做得比较快。主要的就是要看起code parsing的能力。
VE前面的缺点已经总结得比较多,不知道这个官方的插件什么时候才能让人真正放心。作为开发者来说,心里还是最想给VE加把劲的,毕竟VE是开源的,随便用的。
SWT-Designer功能最强大,可惜价格不低。而jigloo可谓介于两者之间,对于个人开发者来说,可以免费使用,而且其功能也足够到开发各种大型的GUI应用程序了,应该是一个合适的选择。