没有合适的资源?快使用搜索试试~ 我知道了~
SWT-JFace-in-Action(中文版).doc
5星 · 超过95%的资源 需积分: 4 718 下载量 197 浏览量
2007-10-17
11:07:57
上传
评论 1
收藏 969KB DOC 举报
温馨提示
试读
64页
SWT-JFace-in-Action(中文版)很不错的一本书,虽然有点小错误,但不影响阅读,还是很不错的呀
资源推荐
资源详情
资源评论
第一章 SWT 和 JFace 概览_1
本章涵盖内容
和 的目的
它们形成的理由
这两个类库如何区别于
许可证和平台支持
在 年三月, 开发者年度大会宣布了由其读者选择的最佳 组件年度奖结果,超过
位开发者投票选举诸多 工具套件(当然包括不少声名显赫的供应商如 和 等)之一。
但最终, 的标准小部件工具套件轻易地击败诸多强手,如同其在 年一样赢得了年度最佳。
虽然 是 开发领域的迟到者,但其同样在 和 !"# 社区获得了荣
耀。一路而来如潮的掌声和好评彰显了 对于 开发的巨大冲击和影响。在过去的每一天,全
球的 开发者们不断被 和 强劲的功能和部署新插件和独立应用程序的能力所折服。
本书的主旨就是在于向你展示这一功能套件的功效和你如何将其应用于你现成的项目之中去。需要指出的
是:
开发基于 $ 的应用程序
用 内置的图形语义环境生成定制化图形
理解 和 后面的结构和方法论
开阔你的 %&' 设计的知识面
构建和部署 的 和 应用程序或独立应用程序
最重要的是 %&' 开发应当是一项充满乐趣的工作!没有一个编程工作能给你这样子的快感。因此,我们将
和 的理论用实例代码贯穿始终来显示 %&' 开发实践。但在开始之前,我们需要向您简要阐明
该技术是什么和它能帮你作什么。
(什么是 $)
虽然我们都知道 和 是工具(套件),但更科学地讲它们是软件类库。它们由包含 * 类和接
口的文件包组成。但又是什么使得这些组件能让你任意组合 %&' 呢?你的应用程序可以快速运行,高效运
用计算机内存并有着和操作系统界面相同的界面体验,没有其他的 %&' 构建体系可以如此。虽然 和
实现了相同的功能,但它们产生用户界面的机理却是迥然不同的。
我们试图通过汽车驱动机理来类比这一情况: 开发就像标准的汽车驱动模式,它给了你更多的控制
权力,并有机会接触系统内部的东西,但是其使用是相当复杂的;而 情况下,就像是汽车的自动驱
动模式,你不必深入太多,但是你丧失了灵活性。当然,实际情况肯定比这个比喻要更为复杂。所以我们
1
需要更进一步的讨论这两个类库。
((用 构建 %&'
每一个操作系统都会有大量的图形组件来构成其默认的用户界面。这一些包括有:按钮、窗口、菜单以及
诸如此类。 的目标就是给予你直接获得这些组件的途径,然后如你所愿地将它们定位和设置。你不必
担心最终用户的操作系统如何,当你在应用程序中加入一个按钮,它就会在 中表现得如同
得按钮,在 + 中如 + 的按钮,当然在 !"# 中亦是如此。用户会认为你这是为他们的机
器定制,而他们并不清楚事实上你仅用 写了一遍代码。
除了图形组件, 还提供事件处理,这意味着你可以追踪你的用户按下了哪个按钮或是选择了哪个菜
单项目。这一强劲的功能使得对用户任意形式输入产生反应成为可能。接下来我们会花大量篇幅来演示这
是如何运作的。
最后,如你想在你的应用程序中加入图形, 提供大量的工具来产生图形,处理新字体或是绘制形
状。这些图形可以使得你不尽可以构建图形,还可以让你控制图形何时、何地和如何地在你的 %&' 中显
现。本书会向你演示 如何管理颜色、绘图、字体、图案,并贡献了大量的实例代码。
提供了构建用户界面的巨大能力,但是将如你在本书中所见,代码将会变得冗长而且复杂。正因如
此, 的设计者推出了 %&' 开发的第二个类库:。
((用 来简化 %&' 开发
为避免一遍遍地使用 来写重复的代码, 的设计者用 工作台产生了 。这个类库
提供大量的快捷方式以削减因单独使用 而大量耗费的时间,但另一方面, 不能完全取代
,许多 %&' 的开发还需要两个套件的特性。
, 高效的一个例证就是其事件处理。在许多用户界面中,你或许要处理诸多不同的事件,如:点击按
钮、敲击键盘或者菜单项选择,而事实上如上事件都在实现同一功能,在此情况下, 的处理方式是
需要对每一个事件单独安排接受和处理过程;而在 中允许你将他们组合成一个单一对象,这样你可
以集中精力于如何应对事件(对象)的处理,而不必理睬事件是如何激发的。这一简单但强力的概念使得
你可以在你的 %&' 中加入菜单、工具条或甚至是调色板而不需加入一大堆代码。
, 另一个有助益的地方就是当你在构建大型的多窗口、多图形的 %&' 时,它可以通过其特有的注册类
来帮你组织 部件和管理内存开销。举个例子,在 中,你需要把你应用程序中的字体和位图的生
成和分布要予以说明;而在 中,你大可使用其内置的 -.-/ 和 '0.-/ 对象来处
理这些乏味的问题。
现在你应该基本理解了这两个类库的特性,接下来我们要更进一步以阐明它们的一些设计概念。
我们将快速浏览如下这些论题:它们是如何在操作系统中表现的,初始产生又是如何的等等。
2
(揭开其面纱
在用户街面上添加组件、事件和图形并不是新鲜玩意儿了,然而 和 何以会激起千层浪呢?在
这里你需要理解设计者的孤心苦诣了。而这又要牵涉到深层次的 %&' 开发的原则问题以及如何使用
这些类库等等。而在我们深入探讨 $ 和 之前,我们还是有必要介绍一下 。
和 的产生也正是 类库(的不争气)而产生,通过比照这 和 两个类库的涉及哲
学,你会更折服与 和 的运行机制;通过这些,你或许也会加入到 开发的 和
$ 两大阵营日益白热化的争论之中。
((:老的替代品
当 " 在 112 年发布 类库时, 开发阵营相当的欢欣鼓舞。因为最终 " 能够以这一工具套
件的平台无关的特性来实践其“编写一次,到处运行”的信条了。 也成为之后 %&' 开发的最为
流行的工具。
但随着时间的推移,许多开发人员又失望了:" 在造就 迷人特性的同时,也使得程序开发日见
复杂,运行效率日益低下。正因如此,很少有看到成功的 %&' 开发的桌面应用。
的渲染
为了确保界面在跨平台是能保持一致, 对用户界面的每一个细节的渲染进行完全控制,也就是
虚拟机指令到其组件的每一个象素和具体行为。虽然 也同底层平台保持通信,但是却不使用
操作系统任何已内置的对象,即其白手起家,创建每一个对象。因为这些组件都运行于较高层次,它们被
引喻为轻量级组件。这些组件在任何 支持的平台上表现一致。
但是这种方式是有缺陷的,因为 3+ 要管理细化到 %&' 的每一个细节表现和行为,相对于直接依于操作
系统的应用程序运行就十分缓慢了。而用户来说,他们绝大多数都偏好于操作系统的界面特性。
的自动垃圾回收机制
为了确保 的可靠性运算保证, 沿用了 的自动垃圾回收机制——%4。这产生了一个威
胁和隐患,因为在应用程序层面上,对于对象的内存分配起始已经不需要了。在程序独立于开发人员而运
行时 %4 被激发,其一个重要的能力就是如果程序员不释放他们的数据,其他程序就无法为其对象调用
这块内存。
%4 的一个好处就是开发人员只需关注编程而不必关心每一个对象的生命周期,而另一方面,内存分配
基制是你无从知晓它会何时发生,另外 %4 的能力也会因 3+ 身处的操作系统平台的不同而不同。因
此,由于大型应用程序内对象产生和丢弃的时效特性,程序的表现在各个不同系统内就无规律可循了。
的设计架构
通过 +34 模式来指导 %&' 设计进程。+34 将用户接口组件分解为三块:状态信息、显示和对外
界事件的反应能力,就是俗称的模型、视图和控制。 的设计者修改了这一方法论并产生了模型代理
架构,如图 (。这一架构整合了部件的视图和控制部分成为一个 &' 代理模块。所以对于每一个单独的用
户界面组件如按钮、框架、和 56 分配内存均包含这组件状态信息和 &' 代理,也即其既控制着
3
表征和事件反应。
通过将模型信息从表征分离出来, 提供了一个编程方法论,它确保了灵活、可重用编程。但这一能
力对于每一个部件都产生了多个对象。当 %&' 变得复杂是,这一额外的分派和丢弃做法会对处理器产生巨
大的负担。
第一章 SWT 和 JFace 概览_2
((新贵:$
的设计者注意到了 的灵活性和其执行问题。他们想要一个套件可以确保 的用户可以
象使用操作系统一样运行一个桌面程序。在实际上,他们是如此之迫切需要,以至于他们编制了他们自己
的类库:和 。
无论 和 $ 都会产生一个基于 的平台无关的 %&',但他们的实现方法又是迥异的。
和 的最显著的特征是其介入了直接调取操作系统,使用底层平台的重量级组件,而不是自己
重建。这一决策使得 和 的表征和运行速度接近于地层平台,在下一章我们会就此展开更为深
入的讨论。当然在此的短暂描述也是有所裨益的。
由于当初 的初创者一开始就意识到 应用程序最总会需要使用到传统代码或是操作系统,所以他
们提供了从 类内部去调取其他语言(如 4 或 -)调取过程的类库。
$ 依靠 7' 来管理操作系统的渲染而不是由其自己来实施。
$ 的资源管理
$ 的另一个重要特性就是其不依赖于垃圾自动回收机制。一开始,这很容易让人以为这会产生
错误代码。然而,你只需在接触到操作系统资源是加以小心,一般不会出现重大问题。 决定将
%4 从 $ 中移走主要有两方面的原因:
内存自动分配的过程在程序运行时是不可预测的,没有任何征兆说明资源何时被释放(可得),当处于
分配过程中时,如果异常情况发生,则过程就可能无法关闭。如果你仅是在处理一些简单数据结构时,可
能这是小事一件。但,如果是在处理一些大型的图形程序时,内存的分配和回收就是不得不要小心谨慎对
待的重大问题了。
对操作系统资源使用 %4 是困难的,由于 在高端层次建立了其轻量级的组件,所以这还不成为
一个问题。然而,如果在低端层次如 小部件同样去使用自动回收机制,那么在跨平台环境下错误的
易发性和不确定性将会是个灾难。如果要花费太多的时间去清理对象,那么内存泄漏问题就会拖垮程序;
或者如果这些资源是以一种错误的方式来释放资源的,那么整个操作系统也要跟着倒霉(宕机)了。
为了预防此类与对象自动回收机制相关联的错误的发生,$ 让你自己来自主决定何时释放资
源。这一工具套件通过其组件类中内置的 89方法来简化这一处理过程。同时,一旦你释放了某一
父(上级)资源,其子(下级)资源也会被自动释放。
4
在以后的章节中,你将看到这意味着在大部分的应用程序中几乎不需要直接的内存释放的必要。你也可以
以半自动方式来调取 $ 来管理内存。
设计和开发的简化
在 中 %&' 是以模型代理架构产生的,由此会对 %&' 的每一个组件产生不同的对象以表征其不同的
特性。但这一复杂方法不是任何情况下都适用。对于那些刚开始起步学习构建按钮、标签的新手来说不需
要如此复杂。而在其他的极端情况下,程序员在构建复杂的图形编辑器和计算机辅助设计工具是,需要与
%&' 功能更多地分离,以取得不同的试图和设计模式。?
和 对其组件的设计架构没有强加任何规则,这意味着你可以随心所欲地极端复杂化地或是极
端简化地构筑你的 %&'。因为 极易扩展,同时其源代码又是开放的,你可以随你所愿地添加工
具或作修改。事实上,已经有大量的插件为 和 组件的 +34 封装而开发出来了。
(($ 之争
随意在网上搜索一下 和 ,都会看到关于这两者孰优孰劣的热烈争论。这一论战是毫无必要也
是没有实际意义的。 是作为 之外的另一选择而产生的,而不是为了去替代 。我们撰写
本节的目的并不在于褒扬某一工具较另一工具有优势,而是为了解释说明如何运作,为何运作的一种机
理。在 开发者中的这种争斗只会伤害到为构建自由的平台无关的应用程序的热忱。这世界给予了
和 同样广阔的天地,我们希望这两大阵营求同存异,共创 社区的大同世界。
($ 的许可证和支持平台
在正是开始编写代码之前,我们很乐意谈及 和 开发应用程序的两个要点:第一、如同在通用
公共许可协议中概要的那样, 和其开发库的条件(?)太缺乏,当你在考虑开发商业应用程序时
很重要;第二、需要关注 和 $ 当前所支持的平台。
((4 ! 通用许可协议
软件基金会是在 4 ! 框架下向公众发布 的。这一许可协议和开放源代码组织的许可协议
方案是完全兼容的,并且通过授权免特许权使用费的代码允许作完全的商业使用并可以在全球范围内再发
布。这意味着任何人可以使用源代码,修改源代码并且销售其最终产品。
虽然某些平台部件是在特殊许可条件下发布的,但是由于整个 和 是在 4 ! 框架范围内的,所
以这使得在全部可支持平台内开发商业 和 应用程序成为了可能。
((支持平台
在撰写本书时,在不少平台上都已经开始支持 和 开发了。因为其依赖于特殊的窗体功能,因
此在某些平台需要多个 应用实施。表 ( 列举了支持 和 的操作系统和用户界面。
在 "# 操作系统中,尚不能支持 :;,然而但是如果在 :; 系统内安装有 %: 的运行库,那么 $
应用程序同样可以运行在 :; 桌面。由于 :; 是构建在 -<=- 套件基础之上的,而 =- 套
件的发布许可协议比 4 ! 有着更多的限制。如果在将来开发了一个 :; 版本的 类库,那么现存的
5
剩余63页未读,继续阅读
资源评论
- wzj1000410132012-10-08相关的资料很少,虽然是英文的,也不错,起了很大作用。
- leon2k2013-05-14内容还可,就是好像少了图
- damage852013-08-13文档还算清晰.
- buaa1boy12013-04-23正在学习SWT,谢谢了。
yanyiwei2003
- 粉丝: 7
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Matlab人脸肤色定理的教师人数统计+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab霍夫曼变换的表盘读数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab火灾烟雾检测源码带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的恶劣天气交通标志识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的霍夫曼变换的表盘示数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的车道线识别系统 +源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB 的霍夫曼变换答题卡识别源码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab+bp神经网络的神经网络汉字识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功