SWT:AWT和SWING的强大竞争者

SWT:AWT和SWING的强大竞争者    


  
内容:

第一个SWT程序
剖析SWT API
更复杂的程序
系统资源的管理
线程问题
SWT的扩展:JFace
参考资料
关于作者


Also in the Java zone:

教学
工具与产品
代码与组件
所有文章
实用技巧




倪大鹏 (ndp@e2one.com)

2003 年 2 月

从Java诞生至今,已经在太多的领域取得成功,然而它却很少在图形界面程序上崭露头角
。究其原因,Java语言缺省的图形界面开发包AWT和SWING实在是难脱其究, 无论速度和外
观,它们都难以让人接受。 如今,Eclipse组织编写的SWT开发包,为Java程序员提供了A
WT和SWING之外的一个更佳的选择。在本文中,对SWT做了简单但尽可能全面的介绍。
Java语言的声望和它在桌面应用程序(GUI程序)所取得的成就显然极不相符,至今仍然很
少能看到非常成功Java桌面程序。虽然有JBuilder,Netbean,JProbe等大型软件作为代表
,但这仍不能证明Java的GUI程序是成功的:它们的外观总是和同一操作系统平台下的其它
软件显得格格不入。对机器配置的需求也似乎永无止境,这使得它们只能被一些总是拥有
当前最高性能PC的程序员们所容忍,或是那些不在乎金钱和时间的专业用户所接受。对绝
大多数计算机使用者来说,AWT或SWING代表着怪异的界面和无法接受的速度。Standard W
idget Toolkit(SWT)或许是Java这一噩梦的终结者,广大Java程序员终于可以开发出高
效率的GUI程序,它们拥有标准的外观,几乎没有人能看出你的程序是用Java写出来的,更
为重要的是,这些程序是跨平台的。

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

一是指性能上的稳定,其中的关键是源于SWT的设计理念。SWT最大化了操作系统的图形构
件API,就是说只要操作系统提供了相应图形的构件,那么SWT只是简单应用JNI技术调用它
们,只有那些操作系统中不提供的构件,SWT才自己去做一个模拟的实现。可以看出SWT的
性能上的稳定大多时候取决于相应操作系统图形构件的稳定性。

另一个稳定是指SWT API包中的类、方法的名称和结构已经少有改变,程序员不用担心由于
Eclipse组织开发进度很快(Eclipse IDE每天都会有一个Nightly版本的发布),而导致自
己的程序代码变化过大。从一个版本的SWT更新至另一版本,通常只需要简单将SWT包换掉
就可以了。

第一个SWT程序
下面让我们开始一个SWT程序。(注意:以下的例子和说明主要针对Windows平台,其它的
操作系统应该大同小异)。首先要在Eclipse安装文件中找到SWT包,Eclipse组织并不提供
单独的SWT包下载,必须下载完整的Eclipse开发环境才能得到SWT包。SWT是作为Eclipse开
发环境的一个插件形式存在,可以在${你的eclipse安装路径}/plugins路径下的众多子
目录下去搜索SWT.JAR文件,在找到的JAR文件中包含了SWT全部的Java类文件。因为SWT应
用了JNI技术,因此同时也要找到相对应的JNI本地化库文件,由于版本和操作平台的不同
,本地化库文件的名称会有些差别,比如SWT-WIN32-2116.DLL是Window平台下Eclipse Bu
ild 2116的动态库,而在Unix平台相应版本的库文件的扩展名应该是.so,等等。注意的是
,Eclipse是一个开放源代码的项目,因此你也可以在这些目录中找到SWT的源代码,相信
这会对开发很有帮助。

下面是一段打开空窗口的代码(只有main方法)。

import com.e2one.example;
public class OpenShell{
public static void main(String [] args) {
    Display display = new Display();
    Shell shell
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值