初识它是在JR上看到的,然后在open-open上找到的,放在硬盘上一直没动,这不,现在一个项目中需要用到统计图表,不得不重新翻出来,运气差的是我下载文章仅一篇都看不了,又是过年在家,家里不能上网,只有jcommon-1.0.5.zip和jfreechart-1.0.1.zip两个东东。还是抱着先看看的想法开始了...(-_-#本人对英文有恐惧症,一般是先看一些中文文章才开始研究这些开源的东东)正题
1.解压jfreechart-1.0.1.zip,最让人赏心悦目的demo出现在眼前,但是是jar文件,也就是暂时只能看效果不能看demo的源代码了。
2.新建web工程(Test_JFreeChartDemo),把源代码下的lib文件夹下jcommon-1.0.0.jar和jfreechart-1.0.1.jar加入工程,把jfreechart-1.0.1-demo.jar也加入工程,这样可以直接看效果了,demo里面都有每个例子基本上都有main,所以加完后点右键可以直接运行例子,哇塞!!好牛叉!!这是我第一反应,有饼转图、柱状条形线形等统计图,3D的也有,例子很多,这里告诉大家一个我看了N个例子后偶尔知道的经验:直接运行其中一个SuperDemo,这是总图,左边一个树,点击相应的节点就可以看到相应的例子,这样就不用一个一个点击运行了:)当点击第三个面板即Source Code的时候,马上明白,这个demo的源码需要¥的!!-_-#
3.由于手头没有反编译工具,怎么办,浏览下jfreechart的源代码吧。在source下一直点下去,在source\org\jfree\chart文件夹下忽然发现居然有demo这个文件夹,嘿嘿!!马上打开把文件拷贝到工程中,运行OK。分别是一个柱状、饼图和连续时间图表(可能表达错误)。查看源代码,重要的有两个函数createDataset 和 createChart ,createChart就是用来创建统计图的了,返回类型是JFreeChart,而Dataset是统计图所需要的数据。JFreeChart可以转换成Image!!哈哈,基本上可以写一个自己的例子了。发现三个示例createChart里都调用了一个类里面的方法-->ChartFactory,这个就是图表工厂吧。
4.找到ChartFactory并打开,这是一个抽象类,我们调用的createBarChart、createPieChart都可以在这里面找得到。把整个类只看方法名过一遍之后基本了解。上面要钱的demo我也可以写,起码能多写几个简单的demo。工厂提供了相当多的方法供您创建所需的统计图表。如:饼状图中就有普通的,3D的,豪华一些的,多饼状图的,根据方法名可以一一得知。
5.看也看了,懂也懂点了。下面开始写一个属于自己的demo吧。我选择了3D饼状图,免费的!!嘿嘿。我甚至懒得把source\org\jfree\chart\demo下随便哪个复制改下名字,然后只需把createChart方法第一行“=”后面替换成ChartFactory.createPieChart3D就行了,参数一样,还可以改下第一个参数title,运行---OK!3D的饼状图出现在你眼前。
6.上面给出了最简单的demo,想更好的出效果,需要更多的拜读源码或网上找一些前辈已经总结好的例子以及文章。如果你只是简单的用这样足够满足你的要求了。
7.扩展:我们希望在页面看到生成的图表。a).把写好的demo中两个方法访问级别都改成publicb).新建servlet(ImageCode),添加访问demo的代码。如
PieDataset dataset=PieChartDemo1.createDataset();
JFreeChart chart =PieChartDemo1.createChart(dataset);
BufferedImage image=chart.createBufferedImage(500, 270);
// 输出图象到页面ImageIO.write(image, "JPEG", response.getOutputStream());
c).配置web.xml 如
《servlet-name>ImageCode《/servlet-name>
《servlet-class>ImageCode《/servlet-class>
《/servlet>
《servlet-mapping>
《servlet-name>ImageCode《/servlet-name>
《url-pattern>/imageCode《/url-pattern>
《/servlet-mapping>
e).新建页面(image.jsp) 添加代码如下
《img src="imageCode"》
f).打开浏览器(本人用的IE),哈哈,OK!!好了,基本上算了完工了,实际运用中可能你需要把它输出保存到硬盘上,以便不需要每次都新建一张图片等,你能得到JFreeChart就可以做到这些了。有什么问题保持联系:)
没有评论:
发表评论