基于XML的界面自动生成设计与实现

来源 :硅谷 | 被引量 : 0次 | 上传用户:Roy163
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]首先对界面自动生成的原理进行介绍,然后从界面描述文件、界面组建库设计、界面组建事件监听类、界面自动生成器设计和XML文档复用这五个方面进行设计和介绍。
  [关键词]XML 界面自动生成
  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120082-01
  
  用户界面是软件系统的重要组成部分,它主要负责接收用户的输入信息并显示程序处理的结果。随着软件系统规模的不断扩大,开发用户界面所耗费的时间和成本也将成倍增加,因此,怎样在较短的时间内设计出符合用户要求的用户界面,提高用户界面的开发效率成了急待解决的一个问题。
  
  一、界面自动生成理论
  
  基于XML的界面自动生成技术涉及界面描述的XML文档、界面组件事件监听类、界面生成器、编程语言的组件库和界面定制工具。界面生成器通过解析界面描述XML文档,调用编程语言的组件库构建组件,为组件绑定相应的事件监听类,自动生成所需要的用户界面。
  要生成一个界面,首先要提供界面描述XML文档和界面组件事件监听类。界面描述XML文档使用XML描述界面上所有组件及其属性,包括名称、大小、位置、布局以及与之相对应的事件监听类等。界面描述XML文档可以用XML编辑器来编写,也可以从其他数据源自动生成。界面组件事件监听类负责监听并处理对应界面描述XML文档中组件的事件,比如按钮点击事件等,由组件事件引发的一系列操作都由该类来实现。在界面描述XML文档的解析过程中,界面生成器会根据文档中的组件事件属性值把事件监听类动态加载进来,并与对应的组件绑定。当某一组件的事件被触发时,就会执行它的事件监听类中定义的操作。
  
  二、自动生成界面设计和实现
  
  界面自动生成技术由界面定制工具、界面描述文件(XML)、界面组件事件监听类、组件库、界面自动生成器及生成的界面六大部分组成。在本方案中,还加上了查询到的XML和具有复用价值的XML文档来增加XML文档的可复用性。
  要生成一个界面首先要启动一个界面自动生成器,来读取界面描述文件XML文档,该文件描述了界面中每个组件的具体信息,如组件类型、名字、对应的类名、事件监听类名、位置、尺寸以及响应事件和范围限制属性等。界面自动生成器根据这些描述信息对界面中的每个组件进行布局,并增加组件的事件监听功能。每个生成的界面都对应一个界面自动生成器对象,它除了负责生成界面外,还负责保存界面中的所有组件信息及一些界面中使用的全局变量,供事件监听类中的方法使用。
  界面自动生成器需要识别界面描述文件中的各种组件类型。因此,就必须定义一个组件库,使用组件库中的组件可以很方便地构建符合要求的配置界面。当然,界面自动生成器也可以读取一个不属于该组件库中的组件,前提是该组件必须是JComponent的子类。界面自动生成器将按照该组件原本的样式显示该组件,并由组件自己完成事件监听的功能。自动生成界面的步骤如下:
  第一步:根据显示界面需要编写界面描述XML文件,这步由可由界面定制工具辅助实现。
  第二步:读取前台设备的硬件数据,生成界面初始数据,并设置到相应的组件中。
  第三步:初始化界面生成器。
  第四步:界面生成器读取界面描述的XML文件。
  第五步:界面生成器根据描述信息创建界面元素,进行布局并显示界面。具体包括:①将XML文件中的组件元素进行分离,按照每个组件的尺寸和位置进行界面布局,对于容器组件使用递归方法进行解析;②将初始数据设置到各个相应的组件中;③完成组件的事件监听。对于组件库内的组件,界面生成器根据XML文件中定义的组件事件类名,运用JAVA的类反射机制实现该事件类的监听功能;对于组件库外的JComponent类的子类组件,由组件自己完成事件监听功能。
  (一)界面描述文件的实现
  界面描述文件使用XML语言来描述,既不能过于简单,也不能过于复杂,其表达内容包括:①界面主菜单结构的定义;②字段定义或者属性的描述信息,包括属性的类型、属性名称、属性是否为主键、属性的值来源类(比如,如果显示为一个列表框,则可以定义列表框的值来源,可以对应于server端的一个业务规则,也可以对应于一组固定的值列表)、属性是否可以编辑、属性的事件响应类;③界面元素的上下文action、action的界面处理方法的定义(应用可以定义处理方法类来实现扩展);④界面元素的导航关系的定义;⑤界面元素的层次关系的定义等等。
  XML文档第一部分包含一些界面初始化的定义,像表示界面的尺寸,中可以填写一个初始化的类的名字,该类必须继承基类InitAction。基类只有一个方法public void doAction(),用户应该在子类中覆盖这个方法。此方法将会在界面的所有组件实例化后执行,因此用户可以在此方法中写一些设定组件初始值的功能。XML描述文档的后面是对每个组件的描述。
  (二)界面组件库设计
  组件库的组件封装了一些独特的属性,以实现一定的功能。表1显示了文本框componentLibrary组件的属性。
  


  (三)组件监听类设计
  事件监听类的名称在XML文件中标识,就是上文所说的action标签中填写的类名,由街面生成器负责实例化和加载到对应组件上。每个组件类都对应一个事件监听的基类。基类提供了一些监听事件的方法,通常是空的方法,用户定制的事件监听类只需要覆盖这些监听事件方法就可以实现对事件的监听。例如componentLibrary组件对应的action基类是TextFieldAction,
  该类封装了componentLibrary的事件监听,包括回车键事件和焦点丢失事件。用户要实现一个componentLibrary组件的事件监听,就必须编写一个新的类,该类继承TextFieldAction并覆盖TextFieldAction中的一些方法。在每个action基类componentLibrary中都提供了public GUIEngine getGe()方法,通过使用该方法可以获取当前界面对应的GUIEngine对象,获取了GUIEngine对象,就可以在事件方法中操纵界面中的任何元素。
  (四)界面自动生成器设计和实现
  界面自动生成器处于整个界面自动生成系统的核心地位,一方面向应用提供API(Application Programming Interface,应用编程接口),由应用调用来创建界面;另一方面向应用提供数据操作接口,通过配置管理内部提供的数据库接口实现对数据库数据的增删、查改。界面自动生成器使用界面描述语言作为输入,实现界面的自动化生成和处理。界面自动生成器类是GUIEngine,该类解析界面描述的XML文档,读取XML描述文档中的所有节点,并根据节点描述生成相应的组件,绑定组件事件监听器,将组件按照界面的XML描述文件中的定位显示。
  界面器的构造函数是public GUIEngine(InitData InitData)。其中InitData是一个接口类,该接口中包括了界面初始化的必要信息,例如节点信息、界面组件初始数据、XML文档信息等。
  public JComponent createComponent()方法是界面器的核心方法,它读取XML文档中组件的相关描述并构造界面中的组件对象,最后将组件放在一个JComponent容器中,并返回。该方法从界面描述文件中读取组件信息,并判断组件的类型,根据不同的组件类型调用不同的组件的构造方法,生成组件对象。如果从获得的子节点解析得到的组件不是GUIEngine中预先定义的组件,则认为该组件是用户自定义的,将该组件按用户定义的样式添加到组件容器中去;如果该组件描述错误,则给用户提供一个出错信息。该方法最后根据界面描述文档中各个组件的定位以及控件大小的描述,来设置组件的大小以及在组件容器中摆放的位置。
  对于组件库中的组件,界面自动生成器都有一个与之对应的方法来生成该组件对象,并完成action事件的添加。而Create componentLibrary方法的主要功能就是生成一个componentLibrary组件对象,并根据描述该组件的XML对象描述的内容,为该组件添加相应的action。
  (五)XML文档的复用
  在用XML描述界面信息的基础上,用XML的查询技术如Xquery,XPath等进行模型信息的查询,可将以前的系统开发所获得的界面信息用XML文件的形式存储起来,并组织成一个界面信息库。对于界面信息的查询,可以分别从名称、描述信息、XML文档中定义的元素和属性等关键字进行查询,也可以综合上述各方面进行复合查询。将查询到的界面描述信息经修改和扩展就可加入到新工程的设计中,能够大大提高开发效率。
  
  参考文献:
  [1]张敦华,一种界面自动生成技术[J].计算机与数字工程.2004 (5).
  [2]徐龙杰,建成.基于模型的用户界面代码自动生成.计算机工程与应用. 2004(12).
  [3]Mike Jasonwski.Java,XML,and Web Service Bible[M].电子工业出版社.2002.
  [4]吴桂阳,建成,清国,成柱.基于XML的界面模板技术.计算机应用研究. 2004(10).
  [5]李大成,陈莘萌. Java与XML的结合应用[J].计算机应用.2002 (2).
  
   作者简介:
  张娟,女 河南许昌人,郑州大学升达经贸管理学院助教,在读硕士,研究方向:软件工程,计算机应用; 王艳,女 河南淮滨人,郑州大学升达经贸管理学院助教,在读硕士,研究方向:计算机网络,数据库技术。
其他文献
[摘要]针对目前互联网在高校的发展普及,提出高校二级网站的建设方案。此方案充分利用ASP.NET2.0技术,使高校的二级网站建设变的快速,高效,并且安全。  [关键词]网站建设 ASP.NET 主题 Menu 用户控件 ObjectDataSource 三层结构  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120063-01    随着互联网的普及,越来越多的高校都
期刊
[摘要]详细阐述在LINUX下安装JDK及环境变量具体配置过程。  [关键词]Java 环境变量  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120041-01    一、JDK的安装及环境变量设置    1.去http://java.sun.com/j2se/1.6.0/download.html下载一个Linux Platform的JDK,建议下载RPM自解压格
期刊
[摘要]介绍基于AT89C51单片机的温度测量系统硬件电路设计方法、工作原理以及程序设计。利用PT1O0阻值随温度变化的特点,将其和其他三个电阻构成非平衡电桥,因而温度的变化可转化成电桥输出微弱电压信号的变化,电压信号经集成运放电路放大后送到A/D转换器,将模拟信号变换成数字信号,单片机根据输入量和设定量进行运算,将结果送到数码管显示,完成对温度的测量。该系统可实现对温度实时较精确的测量,测量范围
期刊
[摘要]通过统一建模语言(UML),提出了基于UML的构件抽取的方法,在此基础上,运用UML的构件抽取方法对教务管理系统进行了构件抽取,为在开发基于构件的教务管理系统中进行构件的抽取提供一种可行的解决方案。  [关键词]统一建模语言 构件 教务管理  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120062-01    一、统一建模语言及构件发展概况    软件构件技
期刊
[摘要]地理信息系统(GIS,Geographic Information System)是一种基于计算机的工具,它可以对在地球上存在的东西和发生的事件进行成图和分析。GIS技术把地图这种独特的视觉化效果和地理分析功能与一般的数据库操作(例如查询和统计分析等)集成在一起。这种能力使GIS与其他信息系统相区别,从而使其在城市智能交通管理中起到相对应的实用价值。  [关键词]城市交通管理 系统构架 共
期刊
[摘要]随着电子商务技术的发展,网络交易安全成为电子商务发展的核心和关键问题。基于Web Service的电子商务安全的问题已经成为电子商务顺利发展的重要市场环境条件。在分析基于Web Service的电子商务的主要安全要素的基础上,具体介绍采用目前电子商务领域的几种安全技术来消除电子商务活动中的安全隐患。  [关键词]Web Service 电子商务 安全技术  中图分类号:TP3文献标识码:A
期刊
[摘要]简要分析和介绍计算机网络入侵检测系统的主要类型及其技术,给出一个网络入侵检测系统的技术实现机理。  [关键词]计算机 网络 安全 入侵检测  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120073-01    随着计算机网络规模的爆炸式增长和网络应用的日益深化,安全问题愈发突出,传统的单一安全技术如防火墙、授权与身份认证系统、信息加密等,都是以静态的方式保障
期刊
[摘要]在学习C语言过程中,指针、地址和数组是最富有特色的内容,特别是指针、地址和数组之间相互关系更具有特色。掌握它们之间的相互关系将有助于C语言其他内容的学习,因此学好这部分内容是掌握C语言的关键。主要用图示法阐述指针和地址、指针和数组之间的联系。  [关键词]C语言 指针 地址 数组 图示法  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120049-01    
期刊
[摘要]主要介绍基于ASP.NET应用系统性能优化方面问题的解决方案。用于提高web应用程序的应用效果。  [关键词]ASP.NET应用系统 性能优化   中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120077-01    一个系统的性能是否良好,已经成为系统是否成功的标志之一。下面对基于ASP.NET应用系统性能从四个方面进行探讨。    一、编码级别    编码
期刊
[摘要]在“数字校园”环境下,FTP与其他应用系统整合的关键是用户管理的设计,如何分配用户的权限,是用户管理设计中要考虑的一个重要问题。通过分析学院FTP各类用户的特点,采用基于角色的访问控制理论对用户权限进行分配,实现用户与用户与访问权限的逻辑分离。  [关键词]FTP 用户权限管理 角色访问控制  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120080-01  
期刊