qinjingkai 发表于 2013-1-15 02:55:27

JFreeChar初探

   今天用JFreeChar整了一下报表,感觉还不错,先整理如下:
   具体效果见上传的图片;
代码如下:
1 前台页面:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>请选择要生成的图形报表<br><select id='charid' onchange="makeChar()"><option value="0">请选择一种图表</option><option value="Pie">PieChart</option><option value="Bar">BarChart3D</option><option value="Line">LineChart</option></select><div id="displayDiv"></div><script type="text/javascript" language="javascript">function makeChar(){                  var charType=document.getElementById("charid").value;      if(charType==0){      return;       }else{                           var imgdiv=document.getElementById("displayDiv");          imgdiv.innerHTML="";          var img=document.createElement("img");         // img.setAttribute("src","servlet/ChartServlet?chartType="+charType);          img.setAttribute("src","myCharServlet?charType="+charType);          //imageZone.setAttribute('src',"servlet/ChartServlet?chartType="+cType);          imgdiv.appendChild(img);      }   }</script>  
后台代码:
package cn.netjava.jFreeChart;import java.io.IOException;import java.io.OutputStream;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.chart.plot.PlotOrientation;import org.jfree.data.category.DefaultCategoryDataset;import org.jfree.data.general.DefaultPieDataset;public class MyCharServlet extends HttpServlet {protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub//super.service(arg0, arg1);System.out.println("到了myCharServlet了");//response.setContentType("image/png;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");response.setContentType("image/png");String chartType=request.getParameter("charType").trim();      JFreeChart jFreeChart=getCharByType(chartType);                if(jFreeChart!=null){      OutputStream os=response.getOutputStream();         ChartUtilities.writeChartAsPNG(os, jFreeChart, 500, 300);          os.flush();          os.close();      }}public JFreeChart getCharByType(String charType){JFreeChart jfChart=null;if(charType.equalsIgnoreCase("pie")){//饼图DefaultPieDataset dataSet=new DefaultPieDataset();dataSet.setValue("java", new Integer(55));dataSet.setValue("c++", new Integer(30));dataSet.setValue("delphi", new Integer(15));//DefaultPieDataset dataSet=getPieDataSet();      jfChart=ChartFactory.createPieChart("各语言使用人数统计表", dataSet, true, false, false);}else if(charType.equalsIgnoreCase("line")){DefaultCategoryDataset dataSet=new DefaultCategoryDataset();String groups[]={"曼联","利物浦","阿森纳"};String round[]={"第一轮","第二轮","第三轮","第四轮","第五轮","第六轮"};for (int i = 0; i < round.length; i++) {for (int j = 0; j < groups.length; j++) {dataSet.setValue(new java.util.Random().nextInt(5),groups , round);}}jfChart=ChartFactory.createLineChart("08/09赛季英超球队积分榜(前六轮)", "球队", "排名", dataSet, PlotOrientation.VERTICAL, true, false, false);}else if(charType.equalsIgnoreCase("bar")){ String citys[]={"北京","上海","广州"}; String months[]={"一月","二月","三月"}; DefaultCategoryDataset dataset=new DefaultCategoryDataset(); for (int i = 0; i < months.length; i++) {for (int j = 0; j < citys.length; j++) {dataset.setValue(new java.util.Random().nextInt(1000), citys, months);}}jfChart=ChartFactory.createBarChart3D("2009年中国三大城市降水量表(第一季度)", "城市", "降水量", dataset, PlotOrientation.VERTICAL, true, false, false);}return jfChart;}public static DefaultPieDataset getPieDataSet() {// 用来填充pie图的数据集DefaultPieDataset dataset = new DefaultPieDataset();// 饼图分块名字String[] seriesNames = { "芙蓉路", "八一路", "五一路", "大学路", };for (int i = 0; i < seriesNames.length; i++) {int value = new java.util.Random().nextInt(1000) + 500;// 设置pie数据集中的数据对dataset.setValue(seriesNames, value);}return dataset;}}  
 
页: [1]
查看完整版本: JFreeChar初探