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 燕然 阅读(1040) | 评论 (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行:当循环检测到窗口被关闭时,需要将color,display和一些相关联的平台资源释放。注意到系统颜色实例(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 燕然 阅读(849) | 评论 (0) | 编辑 收藏