Welcome 微信登录

首页 / 软件开发 / JAVA / SWT全接触

SWT全接触2011-11-09 IBM 薛笛Java 世界的人似乎一直都对 Java 的桌面应用程序十分不满,从 AWT 到 SWING,从默认的 Theme到 第三方的产品,不是太难看(AWT)就是在某些平台有 BUG(SWING,Quaqua--一个Windows平台下的仿Mac 的主题包),再不就是对中文支持不好(某些第三方 LookAndFeel)。于是,如果想要获得和本机平台一 致的用户界面和比较稳定的性能,SWT就成了一个不可忽视的选择。

当然,虽然这个专题名叫"全接触",但毕竟不可能面面俱到,在一篇文章中兼收并蓄SWT的全部内容也 不现实。但不管怎么说,我都将尽力展示SWT的使用细节,希望能为那些对SWT感兴趣的人提供一些帮助。

1.SWT简介

SWT-"Standard Widget Toolkit",它是一个Java平台下开放源码的Native GUI组件库,也是Eclipse 平台的UI组件之一。从功能上来说,SWT与AWT/SWING是基本等价的。SWT以方便有效的方式提供了便携式 的(即Write Once,Run Away)带有本地操作系统观感的UI组件:

由于widget系统的固有复杂性以及平台之间微妙的差异,即使在理想情况下,能够达到工业标准的跨 平台的widget类库也是很难编写和维护的。最早的AWT组件现在被认为是样貌丑陋的,而且存在很多问题 ;SWING组件虽然也是缺点多多,但是随着JDK版本的不断升高,它仍在不断进行着改进。我认为,SWT在 功能上与AWT/SWING不相伯仲,但是组件更为丰富,平台表现稳定,BUG也相对较少。如果你的应用程序真 的需要在多个平台上运行,需要更为美观的界面,又不那么依赖于其他基于AWT/SWING的图形库,那么SWT 或许是一个比AWT/SWING更好的选择。

2.SWT起步

2.1 SWT的HelloWorld

一如介绍其他程序的起始,我们都需要来一个HelloWorld来帮助我们入门,SWT的HelloWorld如下:

import org.eclipse.swt.widgets.*;
public class HelloWorld
{
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Hello World");
shell.setSize(200, 100);
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep ();
}
display.dispose ();
}
}