首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

SWT(Standard Widget Toolkit)本身仅仅是Eclipse组织为了开发Eclipse IDE环境所编写的一组底层图形界面 API。或许是无心插柳,或许是有意为之,至今为止,SWT无论在性能上还是外观上,都超越了Sun公司提供的AWT和Swing。

本章主要介绍如下几方面的内容:

l   SWT程序

l   SWT中使用Swing组件

l   基类Control

l   常用组件

l   容器组件

13.1  SWT简介

Eclipse 是一个通用工具平台。它是一个开放的、可用于任何东西的可扩展 IDE,它为工具开发人员提供了灵活性及对软件技术的控制能力。Eclipse 为开发人员提供了生产大量 GUI 驱动的工具和应用程序的基础。而这项功能的基础就是基于GUI库 的SWT 和 JFace。

13.1.1  概述

SWT(Standard Widget Toolkit)是Eclipse中的窗口小部件工具箱,它是一组窗口组件的实现,并能与底层操作系统图形用户界面平台紧密集成。另外,SWT定义了所有受支持平台上的公共可移植API,并尽可能地使用本机窗口小部件在每个平台上实现该API,这允许SWT在所有平台上维护一致的编程模型,且能立即反映底层操作系统图形用户界面外观中的任何更改。

JFace用来在 SWT 库顶部提供常见的应用程序用户界面功能。JFace并不试图“隐藏”SWT 或者替换它的功能。它提供一些类和接口,用来处理SWT对动态用户界面相关联的常见任务。

SWT/JFace是Eclispe的基础,Eclipse的Workbench就是建立在SWT/JFace之上的。另外,JFace是在SWT之上开发的,它和SWT形成一个交集,其中SWT提供最原始的组件,如图13-1所示。

图13-1  SWT/JFace和Workbench的关系

JFace对SWT进行了扩展,把用户熟悉的一些组件进行了封装,在开发中用户可以尽可能地用JFace组件来开发自己的应用。JFace程序和SWT程序类似,只不过JFace把常用的功能进行了提炼,使用户不必太关心SWT的一些细节。

SWT提供了一套API,它因为Eclipse而生,但它完全可以脱离Eclipse而存在。

13.1.2  基本特性

SWT是一个套库函数,它创建了Java 版的本地操作系统 GUI 控件。它依赖于本机实现,这意味着基于SWT的应用程序具有以下几个关键特性。

l   它们的外观、行为和执行类似于“本机”应用程序。

l   所提供的窗口小部件(Widget)反映了主机操作系统上提供的窗口小部件(组件和控件)。

l   主机GUI库的任何特殊行为都在 SWT GUI 中得到反映。

这些目标使得SWT不同于Java技术的Swing,Swing的设计目标是消除操作系统的差异。SWT库反映了主机操作系统的基本窗口小部件,JFace 库有助于向 SWT 应用程序中添加大量服务,SWT最重要的扩展之一是将应用程序的数据模型与显示及更改它的GUI隔离开来。

SWT中有如下一些基本的组件。

(1)Widget:基本的 SWT GUI 组件(类似于 Java AWT 中的 Component 和 Swing 中的 JComponent),Widget 是一个抽象类。

(2)Control:拥有操作系统的对等物的窗口小部件,Control 是一个抽象类。

(3)Composite:包含其他控件的控件(类似于 Java AWT 中的 Container 和 Swing 中的JPanel)。

(4)Item:其他控件包含的窗口小部件(该控件可能是复合控件),如列表和表。Item 是一个抽象类。

这些窗口组件(或小部件)被安排在继承层次结构中。其中Widget是底层的类,继承关系如图13-2所示。

图13-2  Widget类的继承关系

几乎所有SWT GUI都是从某些基础部分开始创建的。所有SWT窗口组件都可以在 org.eclipse.swt.widget 或 org.eclipse.swt.custom 包中找到(一些Eclipse插件还在其他包中提供了定制的窗口组件)。窗口组件包中包含一些基于操作系统控件的控件,而定制包中则包含一些超出操作系统控件集之外的控件。一些定制的软件包控件类似于窗口小部件包中的控件。为了避免命名冲突,定制控件的名称都是以“C”开始的(例如,比较 CLabel 与 Label)。

在SWT中,所有控件(除了一些高级控件,比如 shell)在创建的时候都必须有一个父控件(一个复合实例)。在创建的时候,这些控件被自动“添加”到父控件中,这与必须明确添加到父控件中的 AWT/Swing 中的控件有所不同,自动添加产生了一种“自上而下”地构造GUI的方法。这样,所有控件都可以采用一个复合父控件(或者一个子类)作为构造函数的参数。

大多数控件都有一些必须在创建时设置的标记选项,因此大多数控件还有另外一个构造函数参数,通常称为样式或风格,该参数提供了设置这些选项的标记。所有这些参数值都是整型常量,并且都是在org.eclipse.swt包的SWT类中定义的。如果不需要任何参数,则可以使用SWT.NONE值。

创建一个组件通常有两个参数,第一个为父组件,第二个为组件的显示样式,例如:“Button button = new Button(shell, SWT.RADIO);”。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论