Eclipse与Netbeans,SWT与Swing

         前一阵子要用java做一个带有界面的上机作业,真的敲起代码来,才发现Swing真的是很麻烦,就一个简单的界面,用代码来实现也是非常繁琐。

        至于Swing的布局管理器,我觉得除了GridBagLayout还有一点实用性之外,其他的像是BoxLayout,GridLayout之类的还真没什么用,用之作出来的界面非常死板难看。

        后来下了WindowBuilder,一个Eclipse的插件,可以用拖拉的方式建立窗口。可以是基于Swing的,也可以是基于SWT的。我试着建了一个基于Swing的窗口,那个卡啊,添加新控件或是改变尺寸的时候会卡上一秒左右吧。。。只能算是勉强能用,不过还是会比手写强了不少。而建立基于SWT的窗口就流畅了很多。

        SWT是IBM开发的一个java界面库,采用了与Swing不一样的思路。Swing是轻量级组件,SWT是重量级组件(轻量级组件的意思是自己绘制组件,而重量级组件是调用本地操作系统的组件,不得不说这两个词翻译的不好,因为我一直以为这两者的差别是代码量的差别。。。)两者各有各的优点。

        Swing是sun在AWT失败(单指界面部分)之后开发的界面库,要说明的是AWT是重量级的,它的缺陷就是为了顾及java的可移植性,它取的是世界上所有操作系统共有的那部分控件,于是乎,交集的结果就是AWT中的组件少得可怜,就Button,Label这些比较基本的,而高级的需要程序员自己实现。于是后来的Swing就采用了自绘控件的方法,因为一切都自己搞定没有依赖,所以离“一处编写,到处运行”也更近了一步。不过齐缺点也是很明显的,就是慢。。。(后来似乎有改善)

        IBM的那伙人就是受不了Swing的慢,自己写了SWT,Eclipse就是用SWT写的。我觉得SWT很大一部分是因为Eclipse的出色才会为人所称道吧。SWT采用的方法是如果系统有该控件,就调用API实现,如果没有,就自己画。因为是调用本地系统的控件,所以SWT被人称道的地方就是快,而且可以调用本地系统的特性,这个事Swing做不到的。事物有长处就必有短处。。。因为调用了本地控件,那么就可能在不同的系统下出现差别,于是就成了“一处编写,到处调试”。。。

        在网上一直看到netbeans做界面很强大的言论,于是在对WindowBuilder失望时候就去下了netbeans。网上还有很多人说netbeans启动很慢,比eclipse慢了很多。不知道是那些言论比较旧了还是因为我的eclipse装了太多插件,总之我启动netbeans的速度比Eclipse快了一些。netbeans的界面美观程度会比Eclipse差一些,看起来也没Eclipse强大(不过具体的我还不了解,毕竟还没怎么用过)。不过我要说的是netbeans做界面真的是比Eclipse强大了不少(单指Swing),很流畅,辅助线也很方便。

        当在设置布局里选择自由设计是,控件可以自由的到处拖放,没有了那些死板Layout的麻烦。我看了一下netbeans生成的代码,使用的是GroupLayout布局,没见过,教科书上也没有提到(我们学校出的书上,线程那里还在教我们用stop(),�濉!!U飧鲈�JDK1.2中就废弃了啊。。。),查了一下,发现是jdk6中新加入的布局管理器。这个布局才像话嘛,不过看了代码之后,发现这布局不适合人用,只适合程序生成。。。。

        就这么多了。

你可能感兴趣的:(swing,GroupLayout)