浅谈Swing和SWT比较

开发 后端
本文主要比较Swing和SWT,分别从组件体系,组件绘制,事件模型和包设计方面进行比较。

Swing和SWT简介

Swing产生的主要原因就是AWT不能满足图形化用户界面发展的需要。AWT设计的初衷是支持开发小应用程序的简单用户界面。AWT缺少剪贴板、打印支持、键盘导航等特性;AWT功能较弱,它甚至不包括弹出式菜单或滚动窗格等基本元素。此外,AWT体系结构还存在着其他一些严重的缺陷。

随着图形化用户界面发展的需要,Swing出现了,Swing组件几乎都是轻量级组件,与AWT相对的重量级组件相比,Swing没有本地的对等组件,不像重量级组件那样要在它们自己本地的不透明窗体中绘制,轻量级组件会在它们的重量级组件的窗口中绘制。

SWT本身仅仅是Eclipse组织为了开发Eclipse IDE环境所编写的一组底层图形界面 API。或许是无心插柳,或是有意为之,至今为止,SWT无论是在性能和外观上,都超越了SUN公司提供的AWT和SWING。目前Eclipse IDE已经开发到了2.1版本,SWT已经十分稳定。这里指的稳定应该包含两层意思

比较Swing和SWT

1.组件体系:
a) Swing:通过在父组件上动态调用add()和remove()方法,来对组件树进行动态维护,因此,可以存在没有父组件的子组件。
b) SWT:通过在构造函数的参数中,指定父组件,因此,不可能存在没有父组件的子组件。

2.组件绘制:
a) Swing:通过调用组件的paint()方法来进行组件的绘制,组件进一步对他的子组件调用paint(),从而完成整棵组件树的绘制。通过子类化,重写paint()方法,可以完全定制一个组件的绘制。
b) SWT:SWT组件只是本地平台上实际组件的一个代理,实际组件采用win32编程方式进行绘制,绘制的过程不在JVM中完成。因此,子类化也不能对绘制进行完全定制。当SWT组件进行绘制时,他在完成了本地的绘制以后,会返回JVM,然后对所有已注册的PaintListener发出通知,因此,通过注册PaintListener可以对组件绘制进行一定程度上的修改。

3.事件模型:
a) Swing中的事件会跟据当前的焦点进行发送。父组件不能对事件进行过滤。Swing中的事件监听器都是有类型的,因此每个组件所能支持的事件类型是通过方法名来限定的。不能扩展。
b) SWT中的事件也是根据当前的焦点进行发送。父组件不能对事件进行过滤。SWT中支持有类型的监听器,也支持无类型的监听器,通过addListener(type,listener),我们可以为组件添加任何类型的监听器。

4.包设计:
a) Swing是一个纯粹的组件库,他没有图形的操作,他的绘制最终转发给Java 2D来完成。
b) SWT包含了组件库和图形库,他的结构与AWT比较接近。

以上是总结Swing和SWT,希望对大家有用。

【编辑推荐】

  1. SwingWorker的实例化
  2. Swing控件可以提供听觉反馈
  3. Java swing组件的串行化方法
  4. Swing组件的新元素Spinner Model
  5. SwingWorker单线程规则
责任编辑:佚名 来源: 中国IT实验室
相关推荐

2009-07-15 15:15:42

比较Swing和SWT

2009-07-14 16:30:41

Swing与SWT

2009-07-16 13:37:33

Swing和AWT

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-17 09:36:14

SWT和Swing的区

2009-07-14 16:02:04

SWT和Swing

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-15 10:23:51

Swing SWT集成

2009-07-10 17:20:38

Swing构件AWT构件

2009-07-15 16:39:51

AWT和Swing

2009-07-16 16:01:55

EventQueue

2009-07-17 10:25:41

AWT和SwingSWT

2009-07-17 09:55:02

事件监听器SWT和SwingAWT

2009-07-14 18:28:58

Swing入门

2009-07-15 13:06:38

Swing组件

2009-07-15 14:29:24

构造JListSwing

2009-07-16 12:58:50

Swing控件

2009-07-17 12:44:01

NetBeans开发S

2009-07-10 11:31:45

Swing支持透明和不规则窗口

2009-08-11 13:13:09

C#和Java比较
点赞
收藏

51CTO技术栈公众号