使用 JfreeChart 开发图表经验总结(含源码)
Keith He 2005 年 10 月 27 日
最近,公司一项目要出很多的图表。由于项目是 B/S 架构的,所以生成的图表也要考
虑能在浏览器上动态显示。
生成基于浏览器的图表方式比较多。据我所知道的,常用的有三种:
1、 VML 方式实现。这种方式是通过产生客户端的代码,由客户端根据代码生成相应
的图表。但这种方式产生的图表有很多的局限性,如受限于浏览器,有些浏览器可能
并不支持 VML。另外,没有封装完整的图表开发包。
2、 通过 applet 来产生图表。这种方式也对客户端要求比较高,必须要有 JRE,而且
通过 applet 生成的图表在加载过程中会有个 Java 的 Log 动画。用户看了可能会感觉不
太舒服。
3、 通过服务端直接生成图表的图片。这种方式对客户端几乎没有什么要求,缺点是
加重了服务端的负担,对服务端要求就相对高了点。
经过比较,根据项目自身特点,我们打算采用第三种方式来开发图表。为了缩短开发
周期、节约成本,我们选用了开源的 JFreeChart(http://www.jfree.org/jfreechart/index.php)。
jfreechart 是一个免费创建图表的 java 工具,目前最新版本是 JFreeChart-1.0.0-rc1。它
可以生成各式各样的图表。这些图表包括饼图、柱状图、线形图、区域图、甘特图等等,
基本可以满足各种项目的要求。但在开发过程中我也发现了 JFreeChart 的一些不足,或者
说有些称得上是 BUG。总体说来,JFreeChart 还是个优秀的开源项目。
关于 JFreeChart 生成图表的文章比较多了,我主要谈谈使用 JFreeChart 的一些比较棘手
问题以及解决方法。同时也会将问题所用到的源码(JFreeChart-1.0.0-rc1+Struts1.2.4)从
项目中抽象出来一起提供给大家。
一、 图片上热点链接中文乱码的解决方法
这个问题是在我查阅关于 JFreeChart 相关资料时出现频率最高的一个问题。其实这个乱
码问题不能怪罪于 JFreeChart 。有人甚至 就因此认为 JFreeChart 对 中文支持不太 完善 ,
JFreeChart 可要叫了:我是冤枉的!
我们来找出问题产生的原因,这个问题也就不难解决了。
首先查看一下出现问题页面的 Html 源文件,你会发现在源文件的开头多出了一段 map
代码,代码类似于这样: