`
kevin_gzhz
  • 浏览: 60732 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Jfreechart与Tapestry4.0 结合实现(下)

阅读更多
5)Java类文件:
    5-1)StatChartServic.java类:
java 代码
 
  1. package com.ce.jfreechart.service;  
  2.   
  3. import java.awt.Color;  
  4. import java.io.IOException;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Calendar;  
  7. import java.util.Date;  
  8. import java.util.HashMap;  
  9. import java.util.Map;  
  10.   
  11. import javax.servlet.http.HttpServletRequest;  
  12. import javax.servlet.http.HttpServletResponse;  
  13.   
  14. import org.apache.tapestry.IRequestCycle;  
  15. import org.apache.tapestry.engine.IEngineService;  
  16. import org.apache.tapestry.engine.ILink;  
  17. import org.apache.tapestry.services.Infrastructure;  
  18. import org.apache.tapestry.services.LinkFactory;  
  19. import org.jfree.chart.ChartFactory;  
  20. import org.jfree.chart.ChartUtilities;  
  21. import org.jfree.chart.JFreeChart;  
  22. import org.jfree.chart.axis.CategoryAxis;  
  23. import org.jfree.chart.axis.DateAxis;  
  24. import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;  
  25. import org.jfree.chart.plot.CategoryPlot;  
  26. import org.jfree.chart.plot.PiePlot;  
  27. import org.jfree.chart.plot.PlotOrientation;  
  28. import org.jfree.chart.plot.XYPlot;  
  29. import org.jfree.chart.renderer.category.BarRenderer3D;  
  30. import org.jfree.chart.renderer.xy.XYItemRenderer;  
  31. import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;  
  32. import org.jfree.chart.urls.StandardPieURLGenerator;  
  33. import org.jfree.data.category.DefaultCategoryDataset;  
  34. import org.jfree.data.general.DefaultPieDataset;  
  35. import org.jfree.data.time.Day;  
  36. import org.jfree.data.time.Hour;  
  37. import org.jfree.data.time.Minute;  
  38. import org.jfree.data.time.Month;  
  39. import org.jfree.data.time.TimeSeries;  
  40. import org.jfree.data.time.TimeSeriesCollection;  
  41. import org.jfree.ui.RectangleInsets;  
  42. import com.ce.jfreechart.vo.PieChartVO;  
  43.   
  44. /** 
  45.  * 功能描述:生成统计结果图的服务类(现主要针对胼图)  
  46.  */  
  47. public class StatChartService implements IEngineService {  
  48.     private HttpServletRequest request;  
  49.   
  50.     private HttpServletResponse response;  
  51.   
  52.     private LinkFactory linkFactory;  
  53.   
  54.     private Infrastructure infrastructure;  
  55.   
  56.     private final static String SERVICE_NAME = "chart";  
  57.   
  58.     public final static String CHART_PARAS_OBJ_NAME = "pcVo";  
  59.   
  60.     public void setResponse(HttpServletResponse response) {  
  61.         this.response = response;  
  62.     }  
  63.   
  64.     public void setRequest(HttpServletRequest request) {  
  65.         this.request = request;  
  66.     }  
  67.   
  68.     public void setLinkFactory(LinkFactory linkFactory) {  
  69.         this.linkFactory = linkFactory;  
  70.     }  
  71.   
  72.     public ILink getLink(boolean post, Object parameter) {  
  73.         Map parameters = new HashMap();  
  74.         return linkFactory.constructLink(this, post, parameters, false);  
  75.     }  
  76.   
  77.     public void setInfrastructure(Infrastructure infrastructure) {  
  78.         this.infrastructure = infrastructure;  
  79.     }  
  80.   
  81.     public String getName() {  
  82.         return SERVICE_NAME;  
  83.     }  
  84.   
  85.     public void service(IRequestCycle cycle) throws IOException {  
  86.         PieChartVO pcVo = (PieChartVO) request.getSession()  
  87.                 .getAttribute(CHART_PARAS_OBJ_NAME);  
  88.         if (pcVo == null) {  
  89.             return;  
  90.         }  
  91.   
  92.         Chart chart = new Chart();  
  93.   
  94.         try {  
  95.             chart.getPieChart3D(request, response, pcVo);  
  96.         } finally {  
  97.             request.getSession().removeAttribute(CHART_PARAS_OBJ_NAME);  
  98.         }  
  99.     }  
  100. }  
  101.   
  102. /** 
  103.  * 功能描述:输出JFreeChart图的类 
  104.  */  
  105. class Chart {  
  106.   
  107.     /** 
  108.      * 方法描述:生成3D胼状图的方法 
  109.      *  
  110.      * @param request 
  111.      *            :HttpServletRequest 
  112.      * @param response 
  113.      *            :HttpServletResponse 
  114.      * @param PieChartVO  
  115.      *            :参数传递vo 
  116.      * @throws IOException 
  117.      */  
  118.     public void getPieChart3D(HttpServletRequest request,  
  119.             HttpServletResponse response, PieChartVO pcVo) throws IOException {  
  120.         response.setDateHeader("Expires"0);  
  121.         response.setContentType("image/jpeg");  
  122.   
  123.         String title = pcVo.getTitle();  
  124.   
  125.         String[] name = pcVo.getName();  
  126.   
  127.         double[] value = pcVo.getValue();  
  128.   
  129.         int width = pcVo.getWidth();  
  130.   
  131.         int hight = pcVo.getHight();  
  132.   
  133.         if (title == null || "".equals(title)) {  
  134.             title = " ";  
  135.         }  
  136.         if (name == null || name.length == 0 || value == null  
  137.                 || value.length == 0) {  
  138.             return;  
  139.         }  
  140.         if (width <= 0) {  
  141.             width = 400;  
  142.         }  
  143.         if (hight <= 0) {  
  144.             hight = 400;  
  145.         }  
  146.   
  147.         DefaultPieDataset defaultpiedataset = new DefaultPieDataset();  
  148.         int j = name.length <= value.length ? name.length : value.length;  
  149.         for (int i = 0; i < j; i++) {  
  150.             defaultpiedataset.setValue(name[i], value[i]);  
  151.         }  
  152.   
  153.         JFreeChart chart = ChartFactory.createPieChart3D(title,  
  154.                 defaultpiedataset, truetruefalse);  
  155.   
  156.         chart.setBackgroundPaint(Color.WHITE);  
  157.         PiePlot plot = (PiePlot) chart.getPlot();     
  158.         plot.setNoDataMessage("No data available");     
  159.         ChartUtilities.writeChartAsJPEG(response.getOutputStream(), chart,  
  160.                 width, hight);  
  161.     }  
  162.   
  163. }  
PieChartPage.java页面类
java 代码
 
  1. package com.ce.jfreechart.page;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4.   
  5. import org.apache.tapestry.annotations.InjectObject;  
  6. import org.apache.tapestry.event.PageBeginRenderListener;  
  7. import org.apache.tapestry.event.PageEvent;  
  8.   
  9. import com.ce.jfreechart.service.StatChartService;  
  10. import com.ce.jfreechart.vo.PieChartVO;  
  11.   
  12. /** 
  13.  * 功能描述:公司人员统计页 
  14.  */  
  15. public abstract class PieChartPage extends org.apache.tapestry.html.BasePage implements PageBeginRenderListener{  
  16.     private final String title  = "公司人员统计饼状图";  
  17.       
  18.     @InjectObject("service:tapestry.globals.HttpServletRequest) 
  19.     public abstract HttpServletRequest getRequest(); 
  20.      
  21.     /**  
  22.      * 页面开始表现时触发,或form重表现时也会触发 
  23.     */   
  24.     public void pageBeginRender(PageEvent event) { 
  25.          
  26.         if (!event.getRequestCycle().isRewinding()) { 
  27.             try{     
  28.                  
  29.                 //画饼图 
  30.                 String[] name = {"管理人员","市场人员","开发人员","OEM人员","其他人员"};  
  31.                 double[] value = {10.02D,20.23D,56.80D,12.30D,5.98D};  
  32.                 PieChartVO pcVo = new PieChartVO();  
  33.                 pcVo.setTitle(title);  
  34.                 pcVo.setName(name);  
  35.                 pcVo.setValue(value);  
  36.                 pcVo.setWidth(450);  
  37.                 pcVo.setHight(300);  
  38.                 if(this.getRequest().getSession().getAttribute(StatChartService.CHART_PARAS_OBJ_NAME)==null)   
  39.                     this.getRequest().getSession().setAttribute(StatChartService.CHART_PARAS_OBJ_NAME, pcVo);  
  40.             }catch(Exception e){  
  41.                 e.printStackTrace();  
  42.             }     
  43.         }  
  44.     }  
  45. }  
参数Vo对象:
java 代码
 
  1. /** 
  2.  * 功能描述:生成JFreeChart饼图的参数Vo对象 
  3.  */  
  4. public class PieChartVO implements Serializable {  
  5.   
  6.     private static final long serialVersionUID = 1L;  
  7.   
  8.     /** 
  9.      * 图表标题 
  10.      */  
  11.     private String title;  
  12.   
  13.     /** 
  14.      * 具体项名称数组 
  15.      */  
  16.     private String[] name;  
  17.   
  18.     /** 
  19.      * 具体项值数组 
  20.      */  
  21.     private double[] value;  
  22.   
  23.     /** 
  24.      * 图表宽度 
  25.      */  
  26.     private int width;  
  27.   
  28.     /** 
  29.      * 图表高度 
  30.      */  
  31.     private int hight;  
  32.   
  33.     方法略......  
  34. }  
PieChart.html页面文件
xml 代码
 
  1. >  
  2. <html>  
  3.   <head>  
  4.     <title>PieChart.html<!---->title>  
  5.       
  6.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  7.     <meta http-equiv="description" content="this is my page">  
  8.     <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
  9.       
  10.     <!---->  
  11.   
  12.   <!---->head>  
  13.     
  14.   <body>  
  15.   <!---->  
  16.               <div align="center"><img src="app?service=chart" border="0"/><!---->div>  
  17.   <!---->body>  
  18. <!---->html>  
PieChart.page文件
xml 代码
 
  1. xml version="1.0" encoding="GBK"?>  
  2.   "-//Apache Software Foundation//Tapestry Specification 4.0//EN"   
  3.   "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">  
  4.   
  5. <page-specification class="com.ce.jfreechart.page.PieChartPage">          
  6. <!---->page-specification>  
分享到:
评论
2 楼 kevin_gzhz 2007-06-14  
对于在name里出现两个相同"管理人员"的情况我没有尝试过,不过这些都是根据需求自定义的,出现这种情况应该是自己手动去合并数值才是对的,没必要去测试JFreeChart的智能有多高!!
1 楼 axiang_2898 2007-05-25  
你好,关于jfreechart放入值的问题:
如你上面的:
String[] name = {"管理人员","市场人员","开发人员","OEM人员","管理人员"}; 
double[] value = {10.02D,20.23D,56.80D,12.30D,5.98D}; 
PieChartVO pcVo = new PieChartVO(); 
pcVo.setTitle(title);  6
pcVo.setName(name); 
pcVo.setValue(value);

上面的name有二个:管理人员,也就是显示图形时只会显示最后一名称的值,如何把这二个值相加显示呢?

相关推荐

    JFreeChart与JSP结合实现报表功能

    标题中的“JFreeChart与JSP结合实现报表功能”指的是使用Java编程语言中的JFreeChart库和JavaServer Pages(JSP)技术来创建动态、交互式的报表应用。JFreeChart是一个强大的开源图表库,能够生成多种类型的图表,如...

    JfreeChart与Struts2结合使用例子

    【JfreeChart与Struts2结合使用】 JFreeChart是一个强大的Java图表库,它提供了丰富的图表类型,如柱状图、饼图、折线图、散点图等,用于数据可视化。Struts2是一个流行的MVC框架,常用于构建企业级Web应用。将...

    jfreechart与struts2结合,实现折线图、饼状图、柱状图的页面显示

    当JFreeChart与Struts2结合时,可以实现动态生成图表并在Web页面上展示的功能。下面将详细介绍这两个工具以及它们如何协同工作。 首先,JFreeChart是一个强大的图表库,它支持多种图表类型,如折线图、饼状图、柱状...

    jfreechart 堆栈柱状图跟折线图结合拼接

    jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707

    用JFreeChart写的雷达图实例

    本文将深入探讨如何利用JFreeChart库来实现一个雷达图实例,这有助于数据可视化,特别是在数据分析和报告中。 首先,我们来看`WMPolarPlot.java`,这个文件很可能包含了对极坐标图(Polar Plot)的实现,因为雷达图...

    用JFreeChart在网页中实现Gantt图

    这可能需要结合JavaScript库,如jQuery和Ajax,来实现与服务器的通信和页面动态更新。 在提供的压缩包文件中,"JFreeChart"可能包含了示例代码、数据库脚本、参考资料和其他帮助文件。你可以通过研究这些文件来...

    JFreeChart与Struts结合的例子生成多维3D柱状图

    JFreeChart与Struts结合生成多维3D柱状图的实例 report.jsp -- JSP文件 ReportAction.java -- Action类 JFreeChartUtils.java -- 工具类

    JFreeChart+JSP实现统计图展示

    "JFreeChart+JSP实现统计图展示"是一个典型的Web应用程序开发案例,它结合了JFreeChart库、JavaServer Pages (JSP) 和Servlet技术,用于从SQL Server 2005数据库中提取数据并以图表的形式呈现。 **JFreeChart** 是...

    SSH与jfreechart整合

    其中`struts2-jfreechart-plugin-x.x.x.jar`是实现Struts2与JFreeChart整合的关键组件。 ##### 2.2 配置Web环境 在`web.xml`中添加Struts2的过滤器配置,如下所示: ```xml xmlns:xsi=...

    java中关于JFreeChart实现实时曲线图

    在Java编程语言中,利用JFreeChart库实现实时曲线图是一种常见的数据可视化技术,尤其适用于需要实时监控或展示数据变化的应用场景。JFreeChart是一个开源的Java图表库,提供了丰富的图表类型和自定义选项,使得...

    dwr 与 jfreechart 实现无刷新报表功能

    DWR与JFreeChart的结合则可以解决这个问题,它们可以实现在用户界面上无刷新地动态更新图表,提高交互性。 首先,我们需要了解DWR的基本原理。DWR在服务器端设置一个引擎,这个引擎可以映射到特定的Java方法,当...

    jfreechart 和jsp 结合折线图的一个例子

    本文将深入探讨如何将JFreeChart与JSP(JavaServer Pages)结合,以实现动态生成折线图的功能。 JFreeChart是一个开源的Java库,它允许开发人员生成高质量的、多样的图表,如折线图、柱状图、饼图等,可以用于报告...

    JfreeChart-雷达图与导出

    3. **添加到Chart**:然后,将`RadarPlot`对象添加到`JFreeChart`实例中,通常通过`JFreeChart.createRadarChart()`方法实现。 4. **自定义图表**:JFreeChart提供了丰富的API用于定制图表,例如调整字体、颜色、...

    JFreeChart与JSP动态图表

    标题“JFreeChart与JSP动态图表”涉及的是在Java Web开发中利用JFreeChart库创建动态图表并与JSP(JavaServer Pages)结合的技术。JFreeChart是一个强大的开源Java库,用于生成高质量的2D图表,包括折线图、柱状图、...

    JFreechart教程与实例

    "JFreechart教程与实例" JFreechart是一款功能强大的图形报表组件,主要用于生成各种动态图表。在Java项目的应用中,JFreechart组件几乎可以满足目前图形报表的所有需求。JFreechart组件可以生成各种各样的图形报表...

    JFreechart 在linux下不显示及中文乱码问题

    标题“JFreechart在Linux下不显示及中文乱码问题”指出的是在使用JFreechart库创建图表时,在Linux操作系统环境下遇到的两个主要问题:图表无法正常显示以及中文字符出现乱码。JFreechart是一个Java库,用于生成高...

    jfreechart_jdbc_demo

    总结来说,JFreeChart与JDBC的结合使用使得从数据库中获取的数据能够以直观的图形形式展示,这对于开发数据分析应用和仪表盘非常有益。通过熟练掌握这两者的结合,你可以创建出具有交互性、易于理解的图表,帮助用户...

    Java使用SWT JFreeChart控件实现的小游戏.zip

    Java使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的...

Global site tag (gtag.js) - Google Analytics