快速业务通道

用JFreeChart创建基于Web的图表 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
n false;"> <AREA SHAPE="RECT" COORDS="143,27,188,255" href="?series=0&category=200" title="200 = 6,721" onclick="javascript: clickChart (''200'');return false;"> <AREA SHAPE="RECT" COORDS="205,54,250,255" href="?series=0&category=300" title="300 = 5,929" onclick="javascript: clickChart (''300'');return false;"> <AREA SHAPE="RECT" COORDS="267,85,312,255" href="?series=0&category=400" title="400 = 5,005" onclick="javascript: clickChart (''400'');return false;"> <AREA SHAPE="RECT" COORDS="329,17,374,255" href="?series=0&category=Diet" title="Diet = 7,017" onclick="javascript: clickChart (''Diet'');return false;"> </MAP>

用JFreeChart创建基于Web的图表(6)

时间:2010-12-11

由此就产生了一个问题:如果根据一个图像来生成对应的MAP对象。我们回头看看刚才的代码,在创建一个图表对象时候有两个参数,我们举柱状图的例子来讲这两个参数就是ChartFactory. createBarChart3D方法中的最后两个参数,这两个参数的类型都是布尔值。这两个参数意思分别是:是否创建工具提示(tooltip)以及是否生成URL。这两个参数分别对应着MAP中一个AREA的title属性以及href属性。

可是我想知道的是怎么来产生这个MAP啊!哈哈,不要着急,JFreeChart已经帮我们做好生成MAP对象的功能。为了生成MAP对象就要引入另外一个对象:ChartRenderingInfo。因为JFreeChart没有直接的方法利用一个图表对象直接生成MAP数据,它需要一个中间对象来过渡,这个对象就是ChartRenderingInfo。下图是生成MAP数据的流程图:

用JFreeChart创建基于Web的图表 - 编程入门网

图7

如上图所示,ChartUtilities类是整个流程的核心,它周围的对象都是一些例如数据对象或者是文件等。这个流程简单描述如下:首先创建一个ChartRenderingInfo对象并在调用ChartUtilities的writeChartAsJPEG时作为最后一个参数传递进去。调用该方法结束后将产生一个图像文件以及一个填充好MAP数据的ChartRenderingInfo对象,有了这个对象我们还是没有办法获取具体的MAP数据,我们还必须借助于ChartUtilities的writeImageMap方法来将ChartRenderingInfo对象读取出来,获取MAP数据的代码片断如下:

PrintWriter w = null; FileOutputStream fos_jpg = null; FileOutputStream fos_cri = null; try{   //根据不同类型的图表使用不同类,以下是针对饼图的操作   PiePlot plot = (PiePlot) chart.getPlot();   plot.setURLGenerator(new StandardPieURLGenerator(url));   //设置工具提示   plot.setToolTipGenerator(new StandardPieToolTipGenerator());   fos_jpg = new FileOutputStream(“d:\\fruit.jpg”);   ChartUtilities.writeChartAsJPEG(    fos_jpg,    100,    chart,    400,    300,    info);   fos_cri = new FileOutputStream(__d:\\fruit.map__);   w = new PrintWriter(fos_cri);   ChartUtilities.writeImageMap(w, __mapname__, info);   w.flush();   }finally{    try{     w.close();    }catch(Exception e){}    try{     fos_cri.close();    }catch(Exception e){}    try{     fos_jpg.close();    }catch(Exception e){}   }

打开文件D:\fruit.map,文件的内容就是要写到页面上的MAP数据。把生成的图像文件以及M

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号