linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > 软件开发 >
栏目导栏
资料搜索
热门文章
·Linux 下 C 语言编程
·Linux下的通用线程池创建
·C++字符串转换篇
·linux C 进程操作篇
·linux上的C/C++编译器gcc/egcs
·linux C 文件权限控制篇
·GCC使用手册
·linux C 接口处理篇
·在Redhat Linux上安装 GCC 编译
·fopen()函数的参数说明
·C语言运算符
·GCC使用指南
·Linux下C开发环境的构成和安装
·GCC使用手册与常用命令
·Linux常用C函数-日期时间篇
最新文章
·epoll入门
·在Linux下发布程序需要注意版本
·Suse Linux系统下JAVA AWT界面
·Vim编译器配合ctags实现函数原
·在Ubuntu Linux 8.04上构建GCC
·Linux操作系统下Socket编程地址
·将VC程序移植到Linux系统的几点
·Linux下malloc/free与new/dele
·Linux下用GTK和socket实现简单
·Linux操作系统下让Tomcat启动在
·Linux操作系统中如何编译C程序
·几种常被人们忽略的Linux系统下
·Eclipse编程工具 在Ubuntu下的
·Linux操作系统下的网络地址转换
·老手经验谈:Linux驱动程序开发
Google
 
JFreeChart学习笔记
[ 作者:  加入时间:2007-06-01 10:22:20  来自:Linux联盟收集整理 ]
几个核心的对象类:

JFreeChart

 3riLinux联盟
JFreeChart中几个核心的对象类:3riLinux联盟
类名3riLinux联盟
类的作用以及简单描述3riLinux联盟
JFreeChart3riLinux联盟
图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象3riLinux联盟
XXXXXDataset3riLinux联盟
数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类。常用的数据集对象有:柱状图数据集对象DefaultCategoryDataset、饼图数据集对象DefauldPieDataset和曲线图数据集对象DefaultTableXYDataset3riLinux联盟
XXXXXPlot3riLinux联盟
图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持。常用的Plot对象有:柱状图CategoryPlot、饼图PiePlot和曲线图XYPlot。3riLinux联盟
XXXXXAxis3riLinux联盟
用于处理图表的两个轴:纵轴和横轴。常用的有NumberAxis数据轴,DateAxis日期轴。3riLinux联盟
XXXXXRenderer3riLinux联盟
负责如何显示一个图表对象。常用的Renderer有DefaultCategoryItemRenderer 柱状图显示器StandardXYItemRenderer曲线图显示器。饼图的Renderer3riLinux联盟
XXXXXURLGenerator3riLinux联盟
用于生成Web图表中每个项目的鼠标点击链接。常用的URLCenerator有StandardCategoryURLGenerator 3riLinux联盟
StandardPieURLGenerator 3riLinux联盟
StandardXYURLGenerator3riLinux联盟
XXXXXToolTipGenerator3riLinux联盟
用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类。常用的有:StandardXYToolTipGenerator3riLinux联盟
StandardCategoryToolTipGenerator3riLinux联盟
StandardPieItemLabelGenerator3riLinux联盟
 3riLinux联盟

一般的创建图表的过程为:

1.  数据库里读取数据

2.  将数据保存到图表对应的数据集对象中

3.  创建坐标轴对象

4.  创建Renderer对象

5.  创建Plot对象

6.  创建JfreeChart对象

7.  生成图片文件(或者二进制流)

 3riLinux联盟

JfreeChart提供的Web应用的例子来说明一下以上几个步骤:

一.柱图。

public static String generateBarChart(Date hitDate, HttpSession session, PrintWriter pw) {

              String filename = null;

              try {

                     //  Retrieve list of WebHits

                     WebHitDataSet whDataSet = new WebHitDataSet();

                     ArrayList list = whDataSet.getDataBySection(hitDate);//获得数据集3riLinux联盟
 3riLinux联盟

                     //  Throw a custom NoDataException if there is no data

                     if (list.size() == 0) {

                            System.out.println("No data has been found");

                            throw new NoDataException();

      //  Create and populate a CategoryDataset

                     Iterator iter = list.listIterator();

            DefaultCategoryDataset dataset = new DefaultCategoryDataset();

                     while (iter.hasNext()) {

                            WebHit wh = (WebHit)iter.next();

                dataset.addValue(new Long(wh.getHitCount()), "Hits", wh.getSection());

                     }//将数据集保存到Dataset对象3riLinux联盟
 3riLinux联盟

                     //  Create the chart object

                     CategoryAxis categoryAxis = new CategoryAxis("");

                     ValueAxis valueAxis = new NumberAxis("");//创建坐标轴

                     BarRenderer renderer = new BarRenderer();//创建Renderer

                     renderer.setItemURLGenerator(new StandardCategoryURLGenerator("xy_chart.jsp","series","section"));//创建URLGenerator.再不需要连接的情况下将第一个参数设置成"###"就可以了

            renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());//创建提示标签

 3riLinux联盟

                     Plot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, renderer);//创建图表区域对象

                     JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, false);

                     chart.setBackgroundPaint(java.awt.Color.white);//创建图表

 3riLinux联盟

                     //  Write the chart image to the temporary directory

ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());//该工具类上面没有介绍,在鼠标移动到图片时显示提示信息是用Map实现的,这些Map是用该类生成的。

                     filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);//保存图表为文件

 3riLinux联盟

                     //  Write the image map to the PrintWriter

                     ChartUtilities.writeImageMap(pw, filename, info);//生成Map信息。这些信息写在pw的输出流中,这里的输出流就是Response.out。也就是直接输出到页面了3riLinux联盟

                     pw.flush();

 3riLinux联盟

              } catch (NoDataException e) {

                     System.out.println(e.toString());

                     filename = "public_nodata_500x300.png";

              } catch (Exception e) {

                     System.out.println("Exception - " + e.toString());

                     e.printStackTrace(System.out);

                     filename = "public_error_500x300.png";

              }

              return filename;

       }

二.图表显示:

<%

       ......

       String filename = WebHitChart.generateBarChart(dDate, session, new PrintWriter(out));//获得图片的文件名。注意该语句写在jsp文件(bar_chart.jsp)的开头,而用out的封装类作为参数,访问该页面后可以看到生成Map热点的内容输出再该页面的开头部分。也就是说最好是把这几句话写在页面有输出之前。3riLinux联盟

    String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;//显示图片的Servlet全路径名,另外文件名作为该Servlet的参数

       ......

%>

......

<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">

 3riLinux联盟

src指定了servlet的全路径名,usermap指定了使用的热点。

Servlet必须在servlet>

    <servlet-name>DisplayChart</servlet-name>

    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>

  </servlet>

   <servlet-mapping>

        <servlet-name>DisplayChart</servlet-name>

        <url-pattern>/servlet/DisplayChart</url-pattern>

</servlet-mapping>

Servlet的作用就是将图片文件的二进制流数据写道response的输出流中,在客户端也就显示成了图片。

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息