最近,做了一个图形项目,主要是利用了一个开源的项目JFreeChart,它的标志图像是一只可爱的黑猩猩,它的网址:http://www.jfree.org/jfreechart/index.html。
在网站上能下载它的源码,doc文档和例子程序(最新版本为0.9.21)。下载下来,可以直接在cmd控制台窗口中运行它的一个demo的jar文件:java -jar jfreechart-0.9.21-demo.jar。可以看到它的窗口例子图形,简单处理一下可以看它的例子的源码,他的两个支持包:gnujaxp.jar。jcommon-0.9.5.jar。第一包好像没什么用,并且你如果使用jdom和jbuilder的tomcat,做开发可能会遇到一个说jdom的某某奇怪的错误,并且web页面也启动不了,那么,你就在系统中把这个包去掉,不影响jfreechart的使用。具体原因不清楚(当时这个问题害了我半天时间,最后在一个老外的论坛上找到了这个解决方法)。把辅助包和jfreechart包添加到你的classpath中,你就可以用jbuilder或是eclipse来开始jfreechart之旅了。
对了,应该说一下jfreechart的应用范围,可以用在窗口设计动态图形,web端动态图形(jsp/servlet都可以),applet图形,它们的使用和一些小的例子网上的很多。我就略去这些了,主要是想总结一下自己学习到的一下东西和自己的一些看法。
可以说jfreechart是一个很不错的项目,从它的源码中可以看出,这个项目好像早在2000就开始了,一直到现在,源码的最后修改好像在2004年7月。它实现了动态数据图形的完美结合,它是纯java的一个开发包,jfreechart不仅能够实现饼图,拄状图,堆栈拄状图,线图等常规图形,而且能实现阶梯图,面积图,散列图,蜡烛图形,各种组合图,多坐标图等多种复杂图形,JFreechart的源码结构很清晰,下载它的doc文档可以很好的看清楚它的类结构,它完全实现了一个抽象的图形对象的具体化,我感觉它的OOP思想用的非常好(当然,其中也有些地方有写不合理,但世界上毕竟没有十全十美事物)。
具个例子:比如一个图形对象(jfreechart),它是由title(标题,子标题,,,,,),Plot(图形的绘制结构),background(图形背景),toolstip(图形工具条)等几个主要对象组成,而就拿plot对象来说,它其中又包括了renderer对象(图形的绘制单元-绘图域)Datset(图形的数据源),domainAxis(x轴),rangeAxis(y轴)等一系列的对象来组成,而axis(轴)是由更细小的刻度,标签,间距,刻度单元等一些列的对象构成,一直细化到最底层的java的awt包和swing包中的stroke等等的那些基础的对象为止。这种抽象深化程度和抽象的合理规范程度令人佩服!
在开发中,对jfreechart中的一些类,我大胆的把它抽了出来,放在了自己的项目中,比如它的org.jfree.chart.ui包下的类和jdbc数据源类,这样,我就可以按照自己的需要来修改这些类,这样做,基不会影响jfeechart的东西,而我也掌握了它的灵活性,毕竟又时候需要修改jfreechart的源码,到后来,我才发现,当初的这种做法真是太明智了:)。
项目其实需求很简单,在一个C/S结构的图形设计器中定制图形生成xml模板,然后上传模板到web端,用户根据报表的sql语句,选择模板,选择要生成图形的列,生成图形,当然图形的大部分参数可以在web端修改。单不保存进模板,模板提供数据源,图形默认参数,图形类型等功能。
。。。。。待续。。。。。。。。(最近比较忙,怕总结都没时间了。。。郁闷。。。。。。。。)
本文地址:http://com.8s8s.com/it/it12773.htm