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有什么区别”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


当前名称:Swing和SWT有什么区别
网页路径:http://scyanting.com/article/jjdddp.html