Eclipse SWT开发入门

来源:互联网 发布:摩托车驾驶证考试软件 编辑:程序博客网 时间:2024/05/04 16:30

SWT(Standard Widget Toolkit,标准窗口小部件工具包)本身仅仅是Eclipse组织为了开发Eclipse IDE环境所编写的一组底层图形界面 API。或是无心插柳,或是有意为之,至今为止,SWT在性能和外观上都超越了SUN公司提供的AWT和SWING。

SWT已经十分稳定,它最大化了操作系统的图形构件API。也就是说,只要操作系统提供了相应图形的构件,SWT就可以应用JNI技术调用它们,只有那些操作系统中不提供的构件,SWT才自己去做一个模拟的实现。

1.5.1  使用Shell创建窗口

本小节将创建第一个SWT程序(注意,本章的例子主要针对Windows平台,其他操作系统大同小异)。本实例是一个简单的窗口,在窗口中间显示“你好,SWT!”字样。通过学习和运行本实例,读者将掌握配置SWT API,编写和运行SWT程序的方法。

Display负责监管GUI的资源并管理和操作系统的通信,它不仅要关注窗口是如何显示、移动和重画的,还要确保诸如鼠标点击、键盘敲击等事件送达小部件并去处理它们。Display类不是可见的。

Shell类扮演着GUI主窗口的角色。一个Shell实例是一个可视化的应用,对主窗口的打开、激活、最大化、最小化和关闭保持追踪。Shell类的主函数为整合在GUI内的容器、小部件和事件提供了一个通用的接入点。从这一点讲,Shell的作用像是这些组件的父类。本例的运行效果是一个简单的SWT窗口。

本实例主要包括3部分,下面依次进行讲解。(JDK 1.6.0+Eclipse 3.2.0)

1.新建SWT项目

(1)单击【文件】菜单,依次选择【新建】|【项目】命令,弹出【新建项目】对话框。

(2)选择【Java项目】,单击【下一步】按钮。

(3)在【项目名】文本框中输入“SWT”,其他选项保持默认值,单击【完成】按钮。

2.引入SWT包

要编写SWT程序,需要引入SWT的jar包。Eclipse组织并不提供单独的SWT包下载。必须下载完整的Eclipse开发环境才能得到SWT包。SWT是作为Eclipse开发环境的一个插件形式存在。此插件名为$ECLIPSE\plugins\org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar。


(1)右击“SWT”项目,选择【属性】命令,弹出【SWT的属性】对话框。

(2)在左侧列表中选择【Java构建路径】选项,在右侧单击【添加变量】按钮,弹出【新建变量路径条目】对话框。

(3)单击【配置变量】按钮,弹出【首选项】对话框。

(4)单击【新建】按钮,弹出【新建变量条目】对话框。

(5)在【名称】文本框中输入“SWT_LIB”,单击【文件】按钮,弹出【选择Jar】对话框,选择$ECLIPSE\plugins\org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar。单击【打开】按钮,返回【新建变量条目】对话框,依次单击【确定】按钮。

此时,SWT_LIB变量已放入【构建路径上的JAR和类文件夹】列表框中,如图所示。

以下为添加SWT_LIB路径变量后的包资源管理器的结构视图:

3.编写程序

(1)右击“src”文件夹,依次选择【新建】|【包】命令,弹出【新建Java包】对话框。在【名称】文本框中输入“helloswt”,单击【完成】按钮。

(2)右击“helloswt”包,依次选择【新建】|【类】命令,弹出【新建Java类】对话框。在【名称】文本框中输入“Helloswt”,单击【完成】按钮。

(3)编写程序代码。代码如下:

package helloswt;

import org.eclipse.swt.*;

import org.eclipse.swt.widgets.*;

import org.eclipse.swt.layout.*;

public class Helloswt {

    public static void main(String[] args) {

        Display display = new Display(); //创建Display实例

        Shell shell = new Shell(display);  //创建Shell实例

        shell.setText("窗口");              //设置窗口的显示标签

        shell.setBounds(200,200,500,350);    //设置shell的显示范围

        //设置窗口布局

        FormLayout layout = new FormLayout();

        layout.marginHeight = 50;

        layout.marginWidth = 50;

        shell.setLayout(layout);

        //创建标签,用于显示"你好,SWT!"字样

        Label helloLabel=new Label(shell,SWT.CENTER);//采用SWT.CENTER样式,即居中显示

        helloLabel.setText("你好,SWT!");

        shell.pack(); //以紧凑方式显示窗口并自动调节大小

        shell.open(); //打开shell,类似于打开窗口

        //开始事件处理循环,直到用户关闭窗口

        while (!shell.isDisposed()) {

        if (!display.readAndDispatch())

             display.sleep();

        }

        display.dispose();

        }

    }

4.配置本机图形库并运行程序

方法一:(第三步可选)

1>     解压 plugins目录下org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar 文件。

2>复制 swt-win32-3236.dll到“$Java\jre1.6.0\bin”目录下。
3>删除解压org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar 得到的文件夹。

单击【运行】按钮,即可运行Helloswt程序。

方法二:

在左侧“包资源管理器”中右击SWTà导入à常规|文件系统à下一步

从目录à浏览à选择D:\eclipse\configuration\org.eclipse.osgi\bundles\146\1\.cp后复选框选中swt-win32-3236.dllà完成。此处不同的Eclipse版本所对应的swt-win32-nnnn.dll版本及其所在的文件夹会有所不同。

单击【运行】按钮,即可运行Helloswt程序。

方法三:

用SWT编写的GUI与其所运行的平台的外观一致,速度也与本机程序相仿。这是因为SWT调用了操作系统自带的图形库,因此在运行程序时需指出本机图形库的位置。SWT本机图形文件名一般为swt-win32-nnnn.dll,这里的nnnn代表4位整数,它们位于$ECLIPSE\plugins\org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar包中,解压为swt-win32-3236.dll。为了确保这些库文件能被程序所用,可将本机图形库放进java.library.path变量所包含的任何目录中。

(1)解压org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar至任意目录,如D:\swt目录。

(2)右击“Helloswt.java”文件,依次选择【运行方式】|【运行】命令,弹出【运行】对话框。选择左侧的SWT应用程序,单击【新建】按钮,自动新建Helloswt项。在右侧选择【自变量】选项卡,在【VM自变量】文本框中输入“-Djava.library.path=D:\swt”,如图所示。

(3)单击【运行】按钮,运行Helloswt程序,结果如下图所示。