Java 学习

坚持不懈,打通-->软件—控制—机械
posts - 5, comments - 3, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2006年7月3日

上一篇详细介绍了一个SWT实例,这一篇接下来介绍SWT组件的生命周期
本文地址:http://www.blogjava.net/cpenet/archive/2006/07/04/56539.html

本篇译自《 Eclipse.Building.Commercial.Quality.Plug.ins.2nd.Edition 》第四章第二节,希望对入门者有所帮助。

 

组件的生命周期

设计 SWT 的一个目标就是小而灵巧。为了达到这个目标,一个基本的设计策略,就是尽可能的使组件的状态存储在平台组件中而不是存储在 SWT 组件中 ( 这句话,我不理解,也翻译的不明白,附原文: To achieve this, a basic design decision was made that as much widget state as possible would be stored in the platform widget rather than in the SWT widget.) 。这与 Swing 形成显著的对比, Swing Swing 组件中维护了所有的组件状态。 ( 可能是这样: SWT 把各个组件的状态交给系统平台来管理,而 Swing 自己管理各个 Swing 组件的状态,这样 Swing 就复杂,耗费的资源,内存的需求也多,不知道是不是 J ) 。通过不把系统平台级别的组件信息复制过来自己维护, SWT 就非常的小巧而且对内存的需求也相应少。

达到这个目的所付出的代价就是 SWT 的组件不能够自己独立存在。当一个 SWT 组件被创建时,同时立即在系统平台下也创建了该组件的对应体。接下来,几乎所有对该组件的信息状态请求都会由平台来处理。

大部分的系统平台在创建一个组件时,需要该组件明确的父组件的上下文,所以 SWT 需要一个父组件来最为它的构造声明。许多平台在创建组件时还需要该组件的特定风格参数的设定。例如:按钮有复选框,单选框,简单按钮和文本域有单行和多行之分。

SWT 类中,风格位段用整数类型来定义且不会更改。风格参数被组织在一起,其它各种构造器传递着这些参数来创建一个组件的初始风格。注意到,所有的平台并不支持所有的风格,所以在很多情况下,被请求的风格被认为是一种提示,它或许会或许不会对一个特殊的平台产生影响。

SWT 组件不在需要时,一些平台要求作出明确的释放。对于组件本身和一些资源 ( 例如:图形,字体,颜色 ) 而言,他们已经具备了系统的这个要求。基本的规则是:如果你创建了一个组件,就要使用 dispose() 方法来撤销这个组件。如果你使用了一些系统资源,例如系统颜色,你就不需要释放他们。

幸运的,当一个组件被释放的,它的所有子组件会自动地被释放。这意味着,如果你释放了一个 shell ,那么所有 shell 包含的组件都会被自动释放。

posted @ 2006-07-04 14:52 燕然 阅读(966) | 评论 (1)编辑 收藏

本文译自《 Eclipse.Building.Commercial.Quality.Plug.ins.2nd.Edition 》第四章第二节,详细解释了 SWT 程序的语句,希望对入门者有所帮助。

  本文地址:http://www.blogjava.net/cpenet/archive/2006/07/03/56407.html

让我们从简单的 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 -> Projects tab并点击Add按钮.

 8.    选择 org.eclipse.swt工程, 点击 OK,完成添加SWT库到你的工程中(见图1).

{26F7CFAE-1A69-42BA-A826-4576DB987FD5}.BMP 

                              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行:当循环检测到窗口被关闭时,需要将colordisplay和一些相关联的平台资源释放。注意到系统颜色实例(colors)将会被提交释放。

二、            运行这个例子

通常情况下,为了启动一个java应用程序,会使用Run As - Java Application 命令。在这里,如此运行将会抛出 UnsatisfiedLinkError 异常,说明没有找到 SWT 的本地库。如果运行 Run As > SWT Application 命令,将会弹出 SWT 启动配置窗口,见图 2 ,在图 2 中可以点击 run 按钮。

 {3717602A-4D02-4E2D-A913-A6BC4E1289A8}.BMP

                                2

点击 run ,运行结果图 3

 {978DFCF8-658E-40EC-80D4-3DD5D8FACF1F}.BMP

          3

(以后继续)

posted @ 2006-07-03 20:09 燕然 阅读(776) | 评论 (0)编辑 收藏