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程序,结果如下图所示。

评论