服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

一个简单的swt程序实例及详解

让我们从简单的 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).

一个简单的swt程序实例及详解(图一)
点击查看大图

图 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 按钮。

一个简单的swt程序实例及详解(图二)

图 2

点击 run ,运行结果图 3 。

一个简单的swt程序实例及详解(图三)

图 3

扫描关注微信公众号