5. 在Eclipse外运行SWT应用程序
要在不使用Eclipse的环境下运行SWT应用程序,swt.jar库必须在classpath中,并且java.library.path环境变量必须正确设置。根据主机平台,必须有合适的本地库存在。对于Windows平台,你可以根据如下来完成本地库的配置:
把swt.dll放在和程序相同的文件夹下。
把swt.dll放在JAVA_HOME\bin\文件夹下。
把swt.dll放在c:\windows\system32文件夹下。
javac -classpath c:\swt\swt.jar HelloWorld.java
Java -classpath c:\swt\swt.jar;. -Djava.library.path=c:\swt HelloWorld
java.library.path是JNI必需的环境变量。如果你没有设置这个环境变量。你的DLL 类是不能访问的。在这种情况下,应用程序不能正常的运行,并会抛出异常。
SWT库
Swt库存在于Eclipse的plug-in目录下。如果你想不下载整个Eclipse包而获得SWT库,你可以在http://www.eclipse.org/downloads目录下单独下载这个SWT库。
6. SWT包(Packages)
SWT主要由下列包组成。这些包的定义是从Eclipse的API文档上得到的。你可以在Eclipse的网站上获得整个API文档。
org.eclipse.swt: 包含了定义了SWT需要使用的常量和异常的类。这个包由三个类组成:SWT, SWTException和SWTError。SWT类可能是最受欢迎的类,因为它包含了SWT库所需要的常量如键盘、错误、颜色、布局、文本样式、按钮等常量。
org.eclipse.swt.widgets: 包含了大多数核心SWT窗口组件,包括支持的接口和类。
org.eclipse.swt.events: 定义了SWT组件使用的typed events, listeners和events。这个包有三组不同的类:Listener接口,Adapter类和Event类。
org.eclipse.swt.dnd: 包含了对SWT窗口组件拖放(drag-and-drop)支持的类。
org.eclipse.swt.layout: 包含了提供对SWT窗口组件自动安置和大小控制的类。
org.eclipse.swt.print: 包含了对SWT窗口组件提供打印支持的类。
org.eclipse.swt.graphics: 这个包提供了实现基本绘图操作需要的点,长方形、区域,颜色,光标,字体,图像上下文(GC)等的类和包含了显示图像代码和载入/保存他们的公有API的图像类。
7. 对话框
对话框的实现是本地的。也就是说,对话框像窗口组件一样是平台组件。SWT的Dialogs是从Dialog抽象类继承的。对话框不是窗口组件但是他可以容纳窗口组件。
图 2. Dialog类层次图.
SWT有不同类型的对话框。有些对话框具有特殊的属性。Dialog类可以如源代码 2中使用。
源代码2. MessageBox例子
MessageBox messageBox =
new MessageBox(shell, SWT.OK|SWT.CANCEL);
if (messageBox.open() == SWT.OK)
{
System.out.println("Ok is pressed.");
}
每个对话框的open()方法返回不同的类型。例如, MessageBox对话框从open()方法返回int类型。因此,需要编写不同的条件来处理每一个对话框的返回值。
ColorDialog显示一个色彩选择调色板。它从return方法返回一个RGB对象。
DirectoryDialog使你可以选择一个目录。它从open()方法返回一个字符串。返回值就是选择的目录。当然,也可以设置额外的过滤器来过滤有些目录。
FontDialog使用户能够从系统所有的字体中选择一种字体。它从open()方法返回一个FontData对象。
FileDialog使用户能够选择一个文件。另外,可以设置扩展名过滤器,路径过滤器和文件名过滤器。对话框有如表1所示的样式:
表1. SWT对话框style bit常量
SWT.OPEN
Shows Open button in the dialog
SWT.SAVE
Shows Save button in the dialog
PrintDialog使用户在打印之前选择打印机。它从open()方法返回一个PrinterData对象。
MessageBox用于给用户回馈信息。你可以使用或(|)操作来联合不同的样式,如源代码3所示:
源代码3. MessageBox例子
MessageBox messageBox =
new MessageBox(shell,
SWT.OK|
SWT.CANCEL|
SWT.ICON_WARNING);
messageBox.setMessage("www.korayguclu.de");
messageBox.open();
可用的按钮常量如下所列。使或操作可以完成不同按钮的联合。SWT框架按照style bits创建对话框。按钮常量有:SWT.ABORT, SWT.OK, SWT.CANCEL, SWT.RETRY, SWT.IGNORE,SWT.YES和SWT.NO。
表2 显示了对话框可以使用的图标。
表2. SWT图标style bit常量
SWT.ICON_ERROR
SWT.ICON_INFORMATION
SWT.ICON_QUESTION
SWT.ICON_WARNING
SWT.ICON_WORKING