基于JFreeReport报表设计器的实现技术_第1页
基于JFreeReport报表设计器的实现技术_第2页
基于JFreeReport报表设计器的实现技术_第3页
基于JFreeReport报表设计器的实现技术_第4页
基于JFreeReport报表设计器的实现技术_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于JFreeReport报表设计器的实现技术[摘要]报表始终是所有信息系统中不可或缺的内容,尤其是在国内的应用系统中,报表更是占据着相当重要的地位。本文提出了一个基于jfreereprt报表设计器的设计方案,并给出了基于sing的实现过程。在设计过程中主要使用了sing、xl持久化保存、v设计形式、软件工程等技术。[关键词]jfreereprt;报表生成;设计形式;xl持久化保存1基于jfreereprt报表背景与简介企业信息化过程中需要处理大量的有关多维数据集的信息,而表现数据信息处理结果的一种理想的方式就是数据报表。报表定义文件是生成复杂报表的重要文件,主要描绘如何使用指定的格式生成复杂的报表,对于jfreereprt定义数据报表格式所需的xl文件通常是由人工输入编写的,对于格式较为简单的报表还可以承受,但是对于大型数据库报表,数据报表关系格式复杂而且字段数量较多,人工输入易出错又繁琐,本文研究的报表设计器就是针对jfreereprt报表生成内核进展开发的。2系统整体设计2.1系统整体框架与v形式基于java的sing技术,设计器内核使用jfreereprt,用于绘制和输出各种复杂的统计报表。设计器的主要工作是将用户对报表的设计意图通过报表生成内核的api传递至报表生成内核,再将报表生成的结果实时反应给用户。报表生成后,应该可以持久化保存。此外,根据当前流行的数据库报表的功能,系统也要具备将报表转换成诸如pdf、htl等其他文件格式的功能。让用户对于事实数据具有全面的分析和理解,增加数据流通为企业带来的效益。为了可以方便地重用组件并且表达模块的独立性,把整个系统组件分解组织成11个类包,只要得到这个包文件,其他类也可以引用该包中的所有类并使用里面的某些组件。该类包分别为:datasure〔数据源包〕,dbutilities〔数据库工具包〕,i〔磁盘操作包〕,jfdainfr〔系统主窗体包〕,reprtgenerate〔报表生成包〕,tls〔系统所需的其他工具类〕,v〔v包,包含有v形式所需的根底支持类,它是系统的底层基类〕。v形式的优点在于这种方法鼓励重用,而不是重新设计。有一样机理的组件,只要改写不一样的模型局部,便能制造出不同成效的组件,而不用重新设计每个组件,缩短和减轻了设计工作的时间和难度。因此选择了v设计形式作为系统的主体架构[1]。v形式根本实现过程为:〔1〕控制器;〔2〕控制器新建一个或多个视图对象,并将它们与模型相关联;〔3〕控制器改变模型的状态;〔4〕当模型的状态改变时,模型将会自动刷新与之相关的视图。java通过专门的类bservable及bserver接口来实现v形式。del类必须继承bservable类,vie类必须实现接口bserver。正是由于实现了上述构造,当模型发生改变时,模型就会自动刷新与之相关的视图。其ul序列图可以表示为图1。在系统详细实现时,首先建立视图类vvie,它继承了bsever抽象类,重载了update()和updatevie()方法。然后构造模型类vdel,它继承自bservable抽象类,重载了addvie(),deletevie()和ntifyvies()方法。通过addvie()方法,模型将实例化视图并且将视图与模型建立关系。最后创立控制器vntrllr类,它实现了atinlistener和itelistener两个接口,重写atinperfred()和itestatehanged()方法[2]。至此,系统的v框架搭建完成。最后建立vapp类,它应用了单例形式〔singletn〕来保证在整个系统中只有一个实例存在,实现了类似于v++中的inapp机制。应用单例形式的思路是:一个类能返回对象一个引用和一个获得该实例的方法。当调用这个方法时,假如类持有的引用不为空就返回这个引用,假如类保持的引用为空就创立该类的实例并将实例的引用赋予该类保持的引用;同时还将该类的构造函数定义为私有方法[3]。这样其他处的代码就无法通过调用该类的构造函数来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例。2.2系统界面设计整个主界面采用有限制的多文档构造。所谓有限制的多文档构造,就是同一时间内只能翻开一个文档的多文档构造。为什么要这样设计而不直接使用单文档构造呢?首先,是由于jfreereprt内核的限制。目前,jfreereprt只支持一个报表对象在内存中,也就是说同一时间只能翻开一个报表文件。因此对于设计器系统来说,同一时间当然也只能翻开一个文档。但是jfreereprt是一个开展很快的工程,也许它很快就能支持多文档编辑,为了保持系统的可扩展性,所以选择了多文档构造。其次,在系统界面中还引入了子菜单的概念,通过在子窗体上构造子菜单,将报表菜单与系统菜单别离,使得主界面更加简约,用户操作简便。系统界面主要分为以下几个区域:〔1〕系统菜单:用户通过它进展保存/翻开报表、设置数据源等系统操作;〔2〕报表菜单:用户通过它对报表进展格式转换、打英翻页、比例设置等操作;〔3〕报表工具条:提供报表菜单常用项的快捷操作;〔4〕编辑阅读域:编辑报表时实时显示编辑效果;〔5〕编辑状态条:显示报表页数等状态信息。报表元素编辑区:报表编辑的主要区域,以分区域的方式显示报表元素的简要信息。并提供对于报表元素添加、删除、修改功能的操作方法。2.3数据库连接类的设计java的数据库编程主要使用jdb类库。使用jdb类库进展编程,调用nnetin.getnnetin()方法时,获得一个nnetin对象,并使用正面〔faade〕形式来实现jdb编程[4]。dbfaade是一个faade对象,它使用exeute()和exeutequery()两种方法执行sql语句。前者执行数据库操作语句,后者执行数据库查询语句。在dbfaade类中包装了两个对象,sqlstateent和nnetingr。sqlstateent类主要实现sql语句的查询,nnetingr类实现了一个单例〔singletn〕形式,用于管理与数据库的连接。3报表部件的实现3.1报表表板的定义为了方便用户设计报表,系统中的报表模板是由假设干个表板组成的,而各报表元素,位于各表板之中。模板、表板、报表元素。系统支持的7类表板如下:页眉板〔pageheader〕、表眉板〔reprtheader〕、组眉板〔grupheader〕、主体板〔iteband〕、组脚板〔grupfter〕、表脚板〔reprtfter〕、页脚板〔pagefter〕等。3.2报表编辑的功能为了实现报表的编辑功能,系统将报表元素组织成一棵元素树。所以报表编辑功能的实现首先要构造元素树[5]。为了完成元素树的构造,必须设计一个机制来识别报表中的元素。由于jfreereprt本身定义的报表元素类型比拟简单,不便于用户编辑报表,对于jfreereprt的报表元素类型进展了扩展。系统中的报表元素共有5种类型:stringeleent〔文本元素〕,它是报表中最常用的元素类型,分为域绑定型和静态型;nubereleent〔数值元素〕,是一个域绑定型元素,用于存放数值格式信息,可以设置数值的显示格式;dateeleent〔日期元素〕,属于域绑定型元素,存放日期信息,且可以设置日期的显示格式;shapeeleent〔图形元素〕,矩形、直线等矢量图形用图形元素表示;iageeleent〔图片元素〕,用于存放外部的图片。由于对jfreereprt的元素类型进展了扩展,就需要对元素类进展重新设计。目前,只有stringeleent支持静态类型数据,为了保持系统的可扩展性,构造了一个releentif接口用于保存元素的类型信息。stringeleent、nubereleent和dateeleent在jfreereprt中都属于texteleet,所以它们都继承了texteleent类,通过setdatasuretype()方法来应用不同的格式模版,完成类的扩大。在识别报表元素时只需对releentif对象进展instanef运算,即可获知当前的报表元素。图2展示了系统报表元素的类设计图。3.3报表定义文件的存取系统的最终目的是自动生成jfreereprt的数据报表定义文件,因此有必要将数据源信息与数据报表的定义分开保存。这样就可以实现数据与款式展示的别离。为此,系统引入了工程的概念:将数据报表的款式定义信息和数据源信息分别持久化保存,再用一个工程文件保存上述两个文件的途径。jfreereprt提供了报表定义文件输出的api方法[6],由于数据源对象是一个javabean类,可以使用xlender和xldeder类库方法将其序列化,限于篇幅,源码不再列出。4结语报表问题是企业信息化过程中关注的一个焦点,它的难点在于实现客户化,本文中介绍了一个基于jfreereprt的报表生成器的一个设计过程,并给出了设计jfreereprt报表生成器的关键步骤。目前的系统实现了jfreereprt主要功能。随着jfreereprt的系统应用范围扩大,还有待于在以下方面完善[7]:〔1)继续加强设计器的功能,实现更丰富的报表模版〔比方子从报表、套打报表等〕,并加强图表功能。〔2)设计基于jfreereprt的效劳器端,实现报表的网络发布。[参考文献][1]brueeapler.java与ul面向对象程序设计[].北京:人民邮电出版社,2002:127-130.[2]tyers,alexandernakhivsky.javaxl编程指南[].北京:电子工业出版社,2001:379-382.[3]jhn’dnahue.java数据库编程宝典[].北京:电子工业出版社,2022:5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论