




已阅读5页,还剩57页未读, 继续免费阅读
(计算机应用技术专业论文)基于java+synth可视化外观设计的研究和实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 随着j a v a 技术的不断发展,j a v a 图形用户界面的开发受到越来越多的关注。 s u n 为了克服以往在图形界面外观设计上的复杂性,在j d k l 5 中引入了s y n t h 可切换皮肤的外观。s y n t h 针对的是非程序员,它可以让开发人员不必编写 任何代码就可以创建新的外观。s y n t h 的出现改变了以往j a v a 应用程序的外观设 计方式,把外观的设计放在了) 0 1 l 文件中进行,使外观设计与程序代码“分隔” 开,并且大大提高了外观设计效率。 由于在用s y n t h 进行外观设计的时候,开发人员需要在x m l 文件中设置数量 众多的组件外观属性,而且还要使其格式和语法符合s y n t hd t d ( 文档类型定义) 的规定。所以对于开发人员来说,s y n t h 的使用还是不太方便。因此,本文提出 了一种基于s y n t h 的可视化外观设计的解决方案。基于s y n t h 的可视化外观设计 可以让用户以交互的方式设置组件的外观属性,外观的设计简单、方便、快捷, 同时能够对设计的外观效果进行预览,最终将设计的外观转换成x m l 文件输出。 本文首先对j a v a 技术、x m l 技术和s y n t h 的相关知识进行了介绍。然后对基 于s y n t h 的可视化外观设计工具进行了详细的系统分析、结构设计、功能部件设 计、系统配置文件的构造和系统数据模型的设计。最后是工具的实现。 图1 5表5参3 6 关键词:j a v a ;x m l ; s y n t h ; 可视化外观设计 分类号:t p 3 1 1 a b s t r a c t w i t hj a v at e c h n o l o g yu n i n t e r r u p t e dg r o w t h ,j a v ag r a p h i c a lu s e ri n t e r f a c e ( g u i ) d e v e l o p m e n tc a t c h e sm o r ea n dm o l ea t t e n t i o n i no r d e rt or e d u c et h ec o m p l e x i t yo f j a v ag u id e s i g ni nt h ep a s t ,s u ni n t r o d u c e ss y n t ht os w i n g _ 1s k i n n a b l eo fl o o k a n df e e l ( i 矗f ) ,i nj d k l 5 d e s i g n e df o r t h e n o n - p r o g r a m m e r s ,s y n t ha l l o w s d e v e l o p e r sc r e a t ean e wl & fw i t h o u tw r i t i n gj a v ac o d e s t h es y n t ha p p e a r i n gh a s c h a n g e dt h ef o r m e rm e t h o do fj a v aa p p l i c a t i o nl & fd e s i g n :p l a c i n gt h ed e s i g no f l & fi na ne x t e r n a lx m lf i l ea n dr e m o v i n gi tf r o mt h ec o d e ,a n dt h ee f f i d e n c y u s i n g s y n t ht oc r e a t eac o m p l e t el & fi sv e r yh i g h w h e nt h ed e v e l o p e r sc r e a t el fb ys y n t h t h e yn e e dt os e tal a r g en u m b e ro f c o m p o n e n tl & fa t t r i b u t e si nt h ex m lf i l e ,m o r e o v e r , t h e ym u s tm a k ei t sf o r ma n d g r a m m a rc o n f o r mt o t h es t i p u l a t i o no fs y n t hd t d ( d o c u m e n t st y p e d e f i n i t i o n ) t h e r e f o r es y n t hi ss t i l l ln o tc o n v e n i e n tf o rd e v e l o p e r s t h i sp a p e r p r o p o s e sv i s u a ll & f d e s i g ns o l u t i o nb a s e do nt h es y n t h ,t h a tc a nl e tt h eu s e rs e tc o m p o n e n tl & fa t t r i b u t e s i na ni n t e r a c t i v e ,s i m p l e ,c o n v e n i e n ta n da g i l ew a y a n du s e r sc a l lp r e v i e wd e s i g n e f f e c t , a n do u p n tx m l f i l e t h i sp a p e rf i r s t l yi n t r o d u c e st h er e l a t e dk n o w l e d g eo fx m lj a v aa n ds y a t h t e c h n o l o g y , t h e na n a l y s e st h ed e s i g no ft h ev i s u a ll & fd e s i g nt 0 0 1 a st ot h es y s t e m s t r u c t u r ed e s i g n ,t h ef u n c t i o nm o d u l ed e s i g n ,t h es y s t e mc o n f i g u r a t i o nf i l es t r u c t u r e a n dt h es y s t e md a t am o d e ld e s i g n ,t h i sp a p e rh a sg i v e nt h ed e t a i l e d e x p l a n a t i o n f i n a l l yt h i sp a p e rg i v e st h em a i ni m p l e m e n t a t i o no ft h i sd e s i g n f i g u r e1 5 t a b l e5r e f e r e n c e3 6 k e y w o r d s :j a v a , x m l ,s y n t h ,v i s i b l el o o ka n df e e ld e s i g n c h i n e s eb o o k sc a t a l o g :t p - 3 1 1 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及 取得的研究成果据我所知,除了文中特别加以标注和致谢的地方以外, 论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得 塞徵堡王太堂或其他教育机构的学位或证书而使用过的材料与我一 同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并 表示谢意。 学位论文作者签名:垂塞日期:猕么月日 学位论文版权使用授权书 本学位论文作者完全了解塞徽堡王太堂有保留、使用学位论文 的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属于 塞徵堡王太堂学校有权保留并向国家有关部门或机构送交论文的 复印件和磁盘,允许论文被查阅和借阅。本人授权安徽理工大学 可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采 用影印、缩印或扫描等复制手段保存、汇编学位论文。( 保密的学位 论文在解密后适用本授权书) 学位论文作者签名:王毖签字日期:z 石净月罗日 导师签名:丑池签字日期:力年月旁日 安徽理工大学硕士论文第一章绪论 1 1 研究背景 1 绪论 随着i n t e r a c t 的飞速发展,j a v a 技术得到了越来越广泛的应用。j a v a 是s u n 公司 研制的新的一代面向对象程序设计语言,它简单、面向对象、不依赖于机器的结 构,具有跨平台、多线程、多媒体、安全性和稳定性高等优点,并且提供了开发 的机制,具有很高的性能m 。到目前为止,j a v a 毛e 很多领域都取得了成功,然而它 却很少在图形界面程序上崭露头角。至今仍然很少能看到非常成功的j a v a 桌面程 序。虽然有一些大型软件做为代表,如j b u i l d e r ,n e t b e a n ,e c i i p s e ,j p r o b e 等,但 是在j a v ag u i ( 图形用户界面) 的程序设计上仍有一些问题:它们的外观总是和同 一操作系统平台下的其它软件显得格格不入,对机器配置的需求也似乎永无止境。 目前,j a v a 图形界面开发工具包有a 、w 和s w i l l g 【1 9 l 。a w t 是j a v a 语言最初的图 形界面开发包。s u n 在a p p l e t 技术策略方面的首要伙伴n e t s c a p e 提出a p p l e t s 应该维持 和运行时平台一样的外观。他们希望a p p l e t s 在某一平台下在显示和行为上能够像其 他应用程序一样。为了实现n e t s c a p e 的”本地外观”的目标,在j d k 的第一个发布版 中包含了a w t :这个库。a w t 的缺省实现使用了”对等”机制,即每一个j a v ag u i 窗 口部件都在底层的窗口系统中有一个对应的组件。a 、酮睬用了“最小公分母”的 方法,即只提供所有本地窗口系统都提供的特性,这就需要开发人员为更多高级 特性开发他们自己的高级窗口部件,然后提供给用户不同的使用体验。用a w t 开 发的应用程序既缺少流行g u i 程序的许多特性,又不能达到在显示和行为上像用本 地窗口构建库开发的程序一样的目标。后来s u n 与n e t s c a p e 合作开发出一套新的图 形界面开发包s w i n g ,并把它放在了j a v a1 2 版本中【l 】o s w i n g 是在a w t 基础上构建的,提供了a w t 所能够提供的所有功能,并且对 a w t 的功能进行了大幅度的扩充。因为s w i n g 不依赖本地窗口部件,它可以抛弃 a w l 的最小公分母的方法并在每个平台下实现每个窗口部件,从而创建一个比 a w t 更强大的开发工具包。s w i n g 缺省情况下采用本地平台的显示外观。然而,它 并不仅仅限于此,而是还可以采用插件式的显示外观。因此s w i n g j 立用程序可以看 起来象w i n d o w s 应用程序,m o t i f 应用程序,m a c 应用程序甚至它自己的显示外观 一一”金属”。所以,s w i n g ) 立用程序可以完全忽略它运行时所在的操作系统环境并 且仅仅看起来像自己。尽管如此,s w i n g 组件超越了简单的窗口部件,它体现了正 不断出现的设计模式以及一些最佳实践。采f f j s w i n g ,不仅仅得至u g u i 窗口部件的 安徽理工大学硕士论文第一章绪论 句柄和它所包含的数据,而是定义一个模型去保存数据,定义一个视图去显示数 据,定义一个控制器去响应用户输入。事实上,大部分s w i n g 组件的构建是基于 m v c ( m o d e i - v i e w 咖t r o l l e r ) 模式的f 1 6 】。m v c 使应用程序开发变得更清晰,更易维 护和管理i n 。 s w i i l g 有一些成功的应用案例,例如开源文本编辑器j e d i t 或者b o r l a n d 的 u m l ( u n i f i e dm o d e l i n gl a n g u a g e ) 1 1 8 】建模工具t o g e t h c r ,但是s w i n g 应用程序仍然在 桌面应用方面显得很少。原因可能归结为下面两点: ( 1 ) 速度的缺乏。用s w i n g 开发的应用程序仍显得比本地应用程序行动缓慢和响应 不积极。 ( 2 ) 界面外观。虽然s w i n g 拥有各种可插入式的外观,并且事实上可以显示成任何 样子。但是,s w i l i g 一直处于最新的图形用户界面的后面,因为必需在j a v a 库里明 确地添加对最新g u l 的支持。 s u n 意识到了s w i n g 夕 观设计的不足之处,并对其做了很多的改进。我们可以看到 在新推出的j d k l 5 中,s w i n g 在外观设计方式上的改变,即引入t s y n t h 一 种可切换皮肤的外观设计。对于以往s w i n g 的可插入式的外观设计,开发者需要具 有可插入式外观架构的相关知识,并且要通过编程来实现。而s y n t h 是通过更换皮 肤的方式来改变程序的外观,其实s u n 的皮肤概念并不是什么创新。例如,w i n a m p 有数百种皮肤,f i r e f o x 也有几十种皮肤,这些皮肤很容易创建,只需更改一个 x m l 文件即可【2 1 。 s y n t h 的出现改变了以往j a v a 应用程序的外观设计模式,把外观的设计放在了 x m l 文件中进行,使外观设计与程序代码分离开。而且由s v n t h 创建的外观比用编 程的方法要快很多。 s y n t h 使用x m l 文件动态配置s w i n g 的外观的方便性,受到了很多j a v au l 开 发者的欢迎。目前很多j a v a 应用程序的开发都用到了外观设计,因此有必要研究 j a v a 的图形用户界面外观设计技术及实现机制,以提高j a v a 图形界面程序的开发 效率。 1 2 研究内容 本课题是在j a v as y n t h 基础上所做的一项应用研究,即实现一个基9 s y n t h 的b 视化外观设计工具。目的是为用户提供一种简单易用、方便快捷的外观设计方式。 本文所实现的工具具有很好的用户可交互性。用户可以利用该工具查看各种组件 的外观配置属性,同时进行外观的设计并预览设计效果。利用工具还能够将用户 一2 一 安徽理【大学硕士论文 第一章绪论 设计的外观转换成x m l 皮件输出,并直接应用到其它桌面程序中。工具可以将输 出的x m l 文件导入到工具中进行外观属性的修改。 本文主要介绍了基于s y n t h 的可视化外观设计工具的设计和实现。分析了工具 的系统结构,对系统各功能模块的设计,系统配置文件的构造和系统数据模型的 设计作了比较详细的介绍。最后给出了工具的主要功能的实现。 1 3 论文组织 本文分为六章。 第一章绪论,介绍了课题的研究背景、意义、国内外的发展状况和本文的主要研 究内容。 第二章介绍了x m l 的基本知识:x m l 的概念、文档类型定义和x m l 膜式( s c h e m a ) 。 对j a v a 技术在x m l 中的应用x m l 解析器作了介绍。 第三章介绍了j a v as y n t h i 筝j 概念、架构、s y n t h 配置文件的格式和语法以及s y n t h 的 使用方法。通过对s y n t h 的性能、可靠性和效率的分析指出t s y n t h 的优势和不足。 第四章介绍了基于s y n t h 的可视化外观设计工具的设计。根据对系统结构的分析, 给出了系统各功能模块的设计,同时分析了系统配置文件的构造和系统数据模型 的设计。 第五章是工具的开发和实现。介绍了工具的开发环境、外观属性编辑模块的实现、 外观预览功能的实现、系统配置文件的解析和外观配置文件的输出和输入。 第六章结论。对全文作了总结,并指出本课题需要进一步研究的内容和方向。 3 安徽理工大学硕士论文第二章x m l 技术 2 1x m l 简介 2x m l 技术 1 9 9 6 年1 1 月,波士顿s g m l 年会上,新的数据描述语x m l ( e x t e n s i b l em a r k u p l a n g u a g e ) 可扩展标记语言公布于世,并 甸w 3 c ( w o d dw i d ew e bc o n s o r t i u m ) 正式提 案。w 3 c 组织于1 9 9 8 年2 月正式发布了关于x m i 的标准。其目的不仅在于满足小断 增长的网络应用需求,同时还希望借此能够确保在通过网络进行交互合作时,具 有良好的可靠性与互操作性【3 】。 x m l 与h 刑l 一样,都来自s g m l ( s t a n d a r dg e n e r a l i z em a r k u pl a n g u a g e 标准 通用标记语言) 。顾名思义,s g m l 是一种用标记来描述文档资料的通用语言,它 包含了一系列的文档类型定义( 简称d t d ) ,d t d 中定义了标记的含义,因而s g m l 的语法是可以扩展的。s g m l 十分庞大,既不容易学,又不容易使用,在计算机上 实现也十分困难【刎。 h t m l 只使用s g m l 中很小一部分标记。为了便于在计算机上实现,h t m l 规定的标记是固定的,即h 刑l 语法是不可扩展的,它不需包含d i d 。h t m l 这种 固定的语法使它易学易用,在计算机上开发h t m l 的浏览器也十分容易。 近年来,随着w e b 的应用越来越厂泛和深入,人们渐渐觉得h t m l 不够用了。 h t m l 定义了唯一的文件类型,并且标记不能被改动,简单易用却牺牲了语言性能。 尽管h t m l 推出了一个又一个新版本,己经有了脚本、表格、帧等表达功能,但始 终满足不了不断增长的需求。另一方面,这几年来计算机技术的发展也十分迅速, 已经可以实现比当初发明创造h t m l 时复杂得多的w e b 浏览器,所以开发一种新的 w e b 界面语言既是必要的,也是可能的。 有人建议直接使用s g m l 作为w e b 语言,这固然能解决h t m l 遇至i j 的困难。但 是s g m l 太庞大了,学习、使用不方便,而且要全面实现s g m l 的浏览器也非常困 难,于是自然会想到仅使用s g m l 的子集,使新的语言既方便使用又实现容易。正 是在这种形势下,w 3 c 建议使用一种精简的s g m l 版本一x m l 应运而生了【4 】。 x m l 的特点如下: ( 1 ) 自描述。x m l 是一种标记语言,其内容由相应的标记来标识,具有自描述的 特点。 ( 2 ) 可扩展性。x m l 是一种可扩展的标记语言,用户可以定义自己的标记来表达 自己的数据,具有强大的可扩展性。 一4 一 安徽理工大学硕士论文 第二章x m l 技术 ( 3 ) 内容和显示分离。x m l 文档只描述数据本身,而与数据相关的显示则由另外 的处理程序来完成,具有内容和显示相分离的特点。 ( 4 ) 本地计算。x m l 解析器读取数据,并将它递交给本地应用程序( 例如浏览器) 进一步查看或处理,也可以由使用x m l 对象模型的脚本或其他编程语言来处理。 ( 5 ) 个性化数据视图。传递到桌面的数据可以根据用户的喜好和配置等因素,以 特定的形式在视图中动态表现给用户。 ( 6 ) 数据集成。使用x m l ,可以描述和集成来自多种应用程序的不同格式的数据, 使其能够传递给其它应用程序,做进一步的处理。 2 2 文档类型定义( d t d ) d t d ( d o c u m e n tt y p ed e f i n i t i o n ) 是x m l l 0 版规格的一部分。它是) 洲l 文件的验 证机制,属于x m l 文件组成的一部分,d t d 在x m l 文件所扮演得角色就是定义x m l 文件的元素架构、元素标记和属性。旦我们定义好d t d ,在使用编辑工具如x m l s p y 或者验证工具x m l v a l i d a t e 就可以对编写好的x m l 文件进行d t d 检查内容是 否为合法的x m l 文件内容。 d t d 可以看作一个或多个x m l 文件的模板,这些x m l 文件中的元素、元素的 属性、元素的排列方式,顺序、元素能够包含的内容等,都必须符合d t d 中的定义。 x m l 文件中的元素,即我们所创建的标记,是根据应用的实际情况来创建的。想 要创建一份完整性高、适应性广的d t d 是非常困难的,因为各行各业都有他们自 己的行业特点,所以d t d 通常是以某种应用领域为定义的范围1 4 】。 d t d 支持下面的功能,以优先级为序: ( 1 ) 使得技术信息易于发布。 ( 2 ) 使文档创建和修改减少错误。d t d 应该为创建过程提供一个直观的、高效的接 口。d t d 应该是简洁的并且具有足够的细节使得x m l 编写者能够了解它。 ( 3 ) 评审内容。当协作编者循环传递草稿用于评审时,d t d 应该支持非形式工作流。 为了达到此目的,d t d 在文档源中应该提供用于说明作者意图的标记。 d t d 是一个文本文件。d t d 信息可以直接嵌入到x m l 文档中也可以链接到包含该 d t d 的文件上。因为外部d t d 可以被任何遵从它的定义的文档所使用,因此这个 方法是经常被使用的。d t d 中的每个d t d 都使用 语法。 d t d 中有四种类型的标记声明:元素声明、属性声明、实体声明和符号声明。 ( 1 ) 元素声明 格式: 安徽理工大学硕士论文第二章x m l 技术 ! e l e m e n t 表示定义元素,e l e m e n tn a m e 是元素名称,e l e m e n td e f i n i t i o n 是元素的 定义,也就是元素内容格式的定义。e l e m e n td e f i n i t i o n 可以有以下几种形式出现。 e m p t y表示空元素,空元素中既不包含文本,也不含子元素。但是它可以 有属性。 a n y表示该元素中可以包含任何本身有效的元素内容,也就是说,它能够 包含在d t d 其他位置已经声明过的元素。 # p c d a t a 表明该元素可以包含任何字符数据,但是不能在其中包含任何子元 素。一般如果定义元素的e l e m e n t _ d e f i n i t i o n 为# p c d a t a ,最好在其中 只加入纯文本字符数据。 包含其他类型元素最通常的情况是一个元素本身是由其他元素的集合构成的。 例如一个d t d 的元素声明,和对应的x m l 的表示。如下: ! e l e m e n t 参考资料( 书籍i 报纸l 杂志) ) 安徽理工大学学报杂志 ( 2 ) 属性声明 格式: i a t r l i s t 为定义属性的指令,后面是元素的名称,属性名称,属性值类型及 默认值的关键字及默认值。属性值的类型有十种:c d a t a ( 字符数据) 、 e n u m e r a t e d ( 可能的取值的列表) 、i d ( 唯一的数字) 、i d r e f ( i d 类型属性 的值) 、i d r e f s ( 由空格分开的若干个i d ) 、e n t i t y ( 实体) 、e n t i t y s ( 若干个 实体) 、n m t o k e n ( x m l 名称) 、n o t a t i o n ( d t d 中声明的注释名) 和 n m t o k e n s ( 多个x m l 名称) 。默认值的关键字有四种形式:# r e q u i r e d 、 # i m p l i e d 、# f i x 、d e f a u l t v a l u e 。 例如一个学生有姓名和性别两个属性,可以定义为: 符合该d t d 属性声明的x m l 语句如下: ( 3 ) 实体声明 格式:( ! e n t i t ye n t i t y n a m ee n t i t y d e f i n i t i o n ) 6 安徽理工大学硕七论文第二章x m l 技术 ! e n t l t y 为定义实体的指令,e n t i t y - n a m e 是实体名,e n t i t y d e f i n i t i o n 是实体定义。 可以指定一个实体代替一个外部文件的内容,此时需要使用s y s t e m 关键字。例如: 引用方法:& m y e n t i t y 参数实体可定义一组通用的实体,在文档中可通过该参数实体来引用实体。参数 实体的定义与通用实体定义类似,只是中间多了一个,引用时也是用。如: 引用方法:a u s t ( 4 ) 符号声明 一个符号是用来说明( 通过名字) 未解析实体的格式、带有一个符号属性的 元素的格式或者一个处理指令被指定到的应用。符号声明提供了一个名字以及用 于该符号的一个外部标识符。这个名字被用在实体、属性列表声明以及属性规范 中。这个外部标识符用于该符号,使得x i t 3 d :理器可以找到一个能够处理指定符 号中的数据的应用程序。 2 3x m ls c h e m a d t d 的语法相当复杂,并且它不符合x m l 皮件的标准,自成一个体系。目前, 一个代替d t d 的就是w 3 c 定义的s c h e m a ,s c h e m a 如同d t d 一样是负责定义和描 述x m 【皮档的结构和内容模式。x m l s c h e m a 本身是一个x m i 皮档,它符合x m l 语法结构。可以用通用的x m i 解析器解析它。这就方便了用户和开发者,因为可 以使用相同的工具来处理x m l s c h e m a 和其他x m l 信息,而不必专门为s c h e m a 使 用特殊工具。s c h e m a 简单易懂,懂得x m l 语法、规则的人都可以立刻理解它。 s c h e m a 的概念提出已久,但w 3 c 的标准最近才出来,相应的应用支持尚未完善, 但采用s c h e m a 已成为x m l 发展的一个趋势。 x m l s c h e m a 和d t d 都是用于文档验证,但二者还是有一定的区别,其中x m l s c h e m a 更为精确和灵活。x m l 具有下列几个优势【5 】: ( 1 ) x m l s c h e m a 是一种内容“开放”的模型,可扩展、功能强,而d t d 是内容“封 闭”的模型,可扩展性差; ( 2 ) x m l s c h e m a 支持丰富的数据类型,完全能够满足网络应用特别是电子商务的 需求,而d t d 不支持元素的数据类型,对于属性的类型定义也很有限; ( 3 ) x m l s c h e m a 支持名称空间机制,d t d 不支持; 一7 , 安徽理工大学硕士论文第二章x m l 技术 ( 4 ) x m l s c h e m a 可以针对不同情况分别对整个x m l 3 档或者是文档局部进行验 证,而d t d 缺乏这种灵活性; ( 5 ) x m l s c h e m a 的语法完全遵循x m l 觑范,可以和d o m 技术结合使用,功能强大, 而d t d 语法自成一体,比较难以学习。 2 4x m l 解析技术 从x m l 文档中获得信息最好的办法是利用x m l 解- 析器。) a 订l 解析器就是一 段程序,读取要解析的x m l 文件,把解析后的数据保存在用户定义的数据模型中。 目前常用的基于j a v a 的x m l 解析技术有三种:文档对象模型( d o c u m e n to b j e c t m o d e l ,d o m ) ,应用- 于x m l 简单a p i ( s i m p l ea p i f o rx m l , s a x ) ,一种纯粹为 x m t y e n j a v a 设计的j d o m 。 2 4 1d o m d o m ( d o c u m e n to b j e c tm o d e l ,也即文档对象模型) 是用与平台和语言无关 的方式表示x m l ,文档的官方w 3 c 标准。d o m 是以层次结构组织的节点或信息片 断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需 要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次 的,因而d o m 被认为是基于树或基于对象的。 d o m 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久 的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时 候在树中上下导航,而不是像s a x 那样是一次性的处理。d o m 使用起来也要简单 得多。另一方面,对于特别大的文档,解析和加载整个文档可能很慢且很耗资源, 因此使用其他手段来处理这样的数据会更好【6 i 。 图2 1 显示了d o m 解析模型的树型结构。文档是所有d o m 树的根,这个根有 至少一个子节点,即根元素,另一个节点是文档类型( d o c u m e n t t y p e ) ,用于d t d 说明。根元素有子节点,其子节点还有自己的子节点。子节点可以是元素、文本、 注释、处理指令及其他类似信息i 矧。 8 安徽理工大学硕士论文第二章x m l 技术 图2 - 1d o m 树 f i g u r e 2 - 1 d o mt r e e d o m 的使用非常简单。你可以随机地访问x m l 文档,由于整个树都构建在内 存中,因此可以通过d o m a p i 修改这些节点,例如增加一个子节点或修改、删除 一个节点。不过,虽然内存树结构提供了很好的导航支持,但仍有一些解析策略 问题需要仔细考虑。首先,整个x m l 文档必须一次解析完成,不可能只做部分解 析;其次,在内存中加载整个文档和构建完整树结构的成本很高,尤其当文档非 常大的时候。典型地,d o m 树的容量比文档容量要大一个数量级,所以它要消耗 大量内存洲;第三,一般i 拘d o m 节点类型在互操作性上有优势,但对于对象类型 绑定也许不是最好的m 。 2 4 2s a x s a x 是一个用于处理x m l * 件驱动的“推”模型,虽然它不是w 3 c 标准,但它 却是一个得到了广泛认可的a p i 。s a x 解析器不像d o m 那样建立一个完整的文档 树,而是在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事 件处理器提供对文档内容的访问n 常见的事件处理器有三种基本类型【2 7 1 : ( 1 ) d t d h a n d l e r用于访问x m l d t d 内容。 ( 2 ) e r r o r h a n d l e r 用于低级访问解析错误。 ( 3 ) c o n t e n t h a n d l e r 用于访问文档内容,这也是最普遍使用的事件处理器。 图2 2 显示了s a x 解析器如何通过一个回调机制报告事件。解析器读取输入文档并 在处理文档时将每个事件推给文档处理器( m y c o n t e n t h a n d l c r ) 。 9 安徽理工大学硕士论文 第二章x m l 技术 图2 2s a x 解析器的事件驱动 f i g u r e 2 - 2e v e n td r i v e no f s a xp a r s e r 与d o m 相比,s a x 解析器能提供更好的性能优势,它提供对x m l 文档内容的有效 低级访问。s a x 模型最大的优点是内存消耗小,因为整个文档无需一次加载到内 存中,这使s a x 解析器可以解析大于系统内存的文档。另外,你无需像在d o m 中 那样为所有节点创建对象。最后,s a x ”推”模型可用于广播环境,能够同时注册多 个c o n t e n t h a n d l e r ,并行接收事件,而不是在一个管道中一个接一个地进行处理。 s a x 的缺点是你必须实现多个事件处理程序以便能够处理所有到来的事件, 同时你还必须在应用程序代码中维护这个事件状态,因为s a x 解析器不能交流元 信息,如d o m 的父子支持,所以你必须跟踪解析器处在文档层次的哪个位置【冽。 如此一来,你的文档越复杂,你的应用逻辑就越复杂。虽然没有必要一次将整个 文档加载到内存中,但s a x 解析器仍然需要解析整个文档,这点和d o m - - 样i f 。 2 4 3j d o m 虽然d o m 和s a ) ( 提供了非常丰富的功能,但是对于开发人员而言,同时也 带来巨大的负担,因此推出了j d o m 作为一种比较简单的a p i 。与d o m 相同,它 也提供了树型结构来处理x m l ,但是j d o m 的树更简洁。j d o m 兼顾了d o m 和 s a x 的优点,它在背后会提供适配器用来选择具体的x m l 解析器。j d o m 对所有 主要的j a v ax m l 解析器都提供了适配器,因此不必担心现有的主流j a v ax m i 解析 器是否支持j d o m ,当然这也降低了它的灵活性 2 6 1 。 j d o m 是一个开源项目,它基于树型结构,利用纯j a 、,a 的技术对x m l 文档实 现解析、生成、序列化以及多种操作。j d o m 直接为j a v a 编程服务。它利用更 为强有力的j a v a i 吾言的诸多特性( 方法重载、集合概念以及映射) ,把s a x 和d o m 的功能有效地结合起来。在使用设计上尽可能地隐藏原来使用x m v 1 2 7 _ 程中的复杂 性1 8 l 。 j d o m 的内部逻辑结构基本上与d o m 的相同,比如具有d o c u m e n t 、e l e m e n t 、 一l o 安徽理工大学硕士论文 第二章x m l 技术 c o m m e n t 、t e x t 等文档节点类型,其中每一,1 j d o m 文档必须有一个d o c u m e n t 节点, 作为节点树的根节点。根节点可以有子节点或者叶子节点如c o m m e n t t e x t 等。 j d o m 文档中的每一个节点类型均对应格式良好的x m l 文档中的每一个元素。 与d o m 不同的是,树中的所有不同类型节点表示为具体类,而不是表示为接 口。此外,没有所有不同节点类实现或扩展的一般性n o d e 接口和类。与s a y 不同 的是,j d o m 可以随时访问树中的任何部分。 j d o m 自身不包含解析器,他通常使用s a x 2 解析器来解析和验证输入x m l 文档。它包含一些转换器,以将j d o m 表示输出成s a x 2 事件流、d o m 模型或x m l 文本文档嘲。 j d o m 是由以下几个包组成的: o r g j d o m包含了所有的x m l 文档要素的j a v a 类。 o r g j d o m a d a p t e r s包含了与d o m 适配的j a v a 类。 o r g j d o m f i l t e r包含了x m l 文档的过滤器类。 o r g j d o m i n p u t包含了读取x m l 文档的类。 o r g j d o m o u t p u t包含了写入x m l 文档的类。 o r g j d o m t r a n s f o r m包含了将j d o m x m l 文档接口转换为其他x m l 文档接口。 o r g j d o m x p a t h包含了对x m l 文档x p a t h 操作的类。 j d o m 主要类的说明如下: ( 1 ) o r g j d o m 这个包里的类是解析x m l 文件后所要用到的所有数据类型。 a t t r i b u t e ,c d a t a ,c o m e n t ,d o c t y p e ,d o c u m e n t ,e l e m e n t 、e n t i t y r e f 、n a m e s p a c e , p r o s c e s s i n g i n s t r u c t i o n 、t e x t 。 ( 2 ) o r g j d o m i n p u t 输入类,一般用于文档的创建工作。 s a x b u i l d e r 、d o m b u i l d e r 、r e s u l t s e t b u i l d e r 。 ( 3 ) o r g j d o m o u t p u t 输出类,用于文档转换输出。 x m l o u t p u t t e r 、s a x o u t p u t t e r 、d o m o u t p u t t e r 、j t r e e o u t p u t t e r 。 安徽理工大学硕+ 论文 第三章s y a t h 介绍 3 s y n t h 介绍 3 。1 s y n t h 简介 s w i n g 早期的一个设计目标是让应用程序在不用改变代码的情况下,能够支 持多种外观。这个特征允许开发者在他们的程序上能够运行多种外观。后来有许 多定制的外观被开发出来,其中引人注目的有i n c o r s 网站的a l l o yl o o ka n df e e l 和l 2 f 网站的s k i nl o o ka n df e e l 。但是创建一个新的可插式外观需要通过编程实 现,并且要有s w i n g 的可插式外观架构的知识,而这些知识只有专业程序员才具 利9 l 。 s u n 为了能使应用程序外观的个性化过程变得容易,在j d k l 5 中提供了一种 新的外观s y n t h 。与以往的外观不同,这是个通过配置文件进行定义的插入 式的外观。在不修改代码的情况下,用户可以仅通过修改配置文件,即可对控件 的字体,颜色等属性进行修改。配置文件是一个x m l 类型的文件,用户可以在其 中委托所有绘制,基本上省去了代码编写的工作。 创建s y n t h # b 观需要对s y n t hx m l 支:件进行设置,虽然s y n t hx m l 格式看上去 比较复杂,但实际上很简单。在s y n t hx m l 文件中定义了一个主要构件 标签。 标签包含描述一个组件的式样的所有信息,例如颜色、字体、图像 文件、状态,以及一些特定于组件的属性。创建好式样之后,便可以将式样链接 到一个组件。 标签通知s y n t h 引擎将一个已定义的式样链接到一个组件。 这样的组合便完全创建了组件的新外观【2 】o 需要注意的是,s y n t h 不提供以下功能: ( 1 ) s y n t h 无法指定布局。 ( 2 ) s y n t h 只允许改变应用程序的外观,无法指定组件的行为。 ( 3 ) 没有默认的外观。s y n t h 只是一块完全空白的画布,表现为一个完全空白的面 板( p a n e l ) ,只有在x m l 文件中定义了组件时,它才会显示东西【2 1 在s y n t h 甸a v a x s w i n g p l a f s y n t h 中定义应用s y n t h # b 观所需要的类和接口,其 说明如下表所示。 表3 1s y n t h 类的说明 t a b l e 3 1 d e s c r i p t i o no fs y n t hc l a s s 1 2 安徽理工大学硕士论文 第三章s y n t h 介绍 接口类描述 s y n t h c o n s t a n t s 接1 2 1 该接口中定义了s y n l h 使用的常量。这些常l 就是s w i n g 组件所支 持的状态值。其值为:e n a b l e d 、m o u s e _ o v e r 、p r e s s e d 、 d i s a b l e d 、f o c u s e d 、s e l e c t e d 或d e f a u l t 。 可从某种风格中获取的一些颜色的类型安全枚举。类中定义了 s w i n g 组件的某一呈现区域的颜色属性,如:f o r e g r o u n d 、 b a c k g r o u n d 、t e 册_ f o r e g r o u n d 、 i ”r _ x t _ b a c k g r o u n d 、 f o c u s 等 s w i n g 组件的独特呈现区域。一个组件可以支持一个或多个 r e g i o n 特定组件r e g i o n 由此类中的类型安全枚举定义。s y n t h 的 文件格式允许基于r e g i o n 的名称来绑定样式。 一个不可变的瞬态对象,它包含有关r e g i o n 的上下文信息。 s y n t h c o n t e x t 只在它传入的方法的使用期间被认为是有效的。 s y n t h g r a p h i c s u t i l s 用于基本图形调用的包装器 提供创建自定义外观的基础。s y n t h l o o k a n d f e e l 不直接提供一个外 观,所有绘制都被委托。您需要通过l o a d 0 方法提供一个配置文件, 或者给s e t s t y l e f a c t o r y o 提供自己s y n t h s t y l e f a c t o r y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 阳光学院《钢筋混凝土及砌体结构课程设计》2023-2024学年第二学期期末试卷
- 湖南工程职业技术学院《光学实验》2023-2024学年第一学期期末试卷
- 山西运城农业职业技术学院《土木工程建模》2023-2024学年第二学期期末试卷
- 山东省宁津县保店中学2024-2025学年高三毕业年级英语试题学科停课不停学期间线上测试含解析
- 重庆工商大学派斯学院《建筑遗产保护》2023-2024学年第二学期期末试卷
- 山西青年职业学院《影视摄像基础》2023-2024学年第二学期期末试卷
- 湖南省张家界市永定区2025届高中毕业班5月模拟考试生物试题含解析
- 实施清洁生产的主要途径ntP第18章
- 木材加工环境保护与节能减排考核试卷
- 电动剃须刀刀网修理技巧考核试卷
- 排油烟管道施工方案
- 慢性心衰的规范化管理
- 2024年河南艺术职业学院高职单招语文历年参考题库含答案解析
- 2025年湖北仙桃市城投公司招聘笔试参考题库含答案解析
- 高职高专旅游专业顶岗实习管理 (课件)
- 电厂安全培训课件
- 钢筋加工厂施工方案
- 天体运动中的三大模型(讲义)-2025年高考物理一轮复习(新教材新高考)
- AI智能客服建设方案
- 北师大版八年级下册数学期中考试试题及答案
- 有线电视播放行业市场现状分析及未来三至五年行业预测报告
评论
0/150
提交评论