网易学院
一个简单的SWT 程序实例及详解
http://tech.163.com 2006-07-05 10:40:57 来源: 天极网 网友评论 0 条 论坛
让我们从简单的 HelloWorld 应用程序开始。
一、将SWT 添加到工程的类路径中
首先建立一个java 工程。在开始使用SWT 之前,需要将SWT 库文件添加到工程的类路径中。步骤如下:
1. 下载SWT 。在Eclipse SDK 的下载页面中,提供了独立版本的SWT 下载。找到标有SWT Binary and Source 的栏目。下载适合你操作系统的版本,不用解压,直接保存到硬盘中。
2. 在Eclipse 菜单栏,选择File- 〉Import... 打开导入向导
3. 选择Existing Projects into Workspace ,点击Next 按钮
4. 选择 Select archive file 并使用 Browse... 按钮来找到你刚才下载的SWT 文件。
5. 点击Finish 按钮,完成SWT 导入。
6. 右键点击你建立的工程,选择Properties 来打开Properties 对话框。
7. 选择 Java Build Path tab 并点击Add 按钮. -> Projects
8. 选择 org.eclipse.swt 工程, 点击 OK ,完成添加SWT 库到你的工程中( 见图1).
图 1
二、 SWT 代码
现在在你建立的java 工程中,新建一个java 文件,取名为 HelloWorld 。在HelloWorld.java 文件中把main() 方法覆盖为以下代码:
1 public static void main(String[] args) {
2 Display display = new Display();
3 Shell shell = new Shell(display);
4 shell.setText( " Hello World " );
5 shell.setBounds( 100 , 100 , 200 , 50 );
6 shell.setLayout( new FillLayout());
7 Label label = new Label(shell, SWT.CENTER);
8 label.setText( " Hello World " );
9 Color red = new Color(display, 255 , 0 , 0 );
10 label.setForeground(red);
11 shell.open();
12 while ( ! shell.isDisposed()) {
13 if ( ! display.readAndDispatch()) display.sleep();
14 }
15 red.dispose();
16 display.dispose();
17 }
注:
在覆盖了上述代码后, 选择菜单栏中的 Source -> Organize Imports 命令 ( 或者按Ctrl+Shift+O) 来把需要引用的SWT 包导入到HelloWorld.java 文件中 。
以下是对各行代码的详细解释:
第2 行:每个基于SWT 的应用程序都有一个Display 类的实例。用来将低层平台和SWT 进行链接。除了管理SWT 的事件循环,还能访问SWT 需要的平台资源。在16 行,display 实例将会提交给垃圾收集器。
第3 行:每一个窗口都有一个Shell 窗口框架,来与用户进行交互。Shell 像所有的windows 系统一样来处理动作行为,并作为窗口控件的放置场所。
第4 行: setText() 方法设置窗口的标题.
第5 行: setBounds() 方法设置窗口的大小和放置的位置. 在这个例子中, 设置窗口为200 个像素宽,50 个像素高,并放在离屏幕的左上角100x100 像素的位置上。
第6 行: setLayout() 方法 设置窗口框架的布局. FillLayout ,充满式布局管理器,使得组件大小会尽量的充满整个容器.SWT 的布局管理器会在以后详细介绍。
第7 行:在shell 上新建一个简单的label 组件并居中显示label 的文本内容。
第8 行: setText() 方法 设置label 的文本内容。
第9 行:创建一个红色的颜色类的实例。你也可以使用以下语句获得系统红色的实例:
Color red = display.getSystemColor(SWT.COLOR_RED);
第10 行: setForeground() 方法 设置label 的前景色
第11 行:到目前为止,窗口框架还是不可见的。通过open() 方法使得窗口可见。
第12 行: while 语句循环检测窗口有没有关闭。
第13 行:display 控制事件的循环. readAndDispatch() 方法从平台的事件队列中读取事件,并分配他们到合适的处理程序( 接收者) 。只要队列中一直有事件可以处理,这个方法一直返回true ,当事件队列为空时,则返回false( 因此允许用户界面UI 线程出于sleep 状态直到事件队列不为空) 。
第15,16 行:当循环检测到窗口被关闭时,需要将color ,display 和一些相关联的平台资源释放。注意到系统颜色实例(colors) 将会被提交释放。
二、 运行这个例子
通常情况下,为了启动一个java 应用程序,会使用Run As - 〉 Java Application 命令。在这里,如此运行将会抛出 UnsatisfiedLinkError 异常,说明没有找到 SWT 的本地库。如果运行 Run As > SWT Application 命令,将会弹出 SWT 启动配置窗口,见图 2 ,在图 2 中可以点击 run 按钮。
图 2
点击 run ,运行结果图 3 。
来源:http://tech.163.com/06/0705/10/2L8TB7RL0009159T.html