JFreeChart封装示例

以前用JFreeChart的时候每次都需要修改一些显示样式和代码,前段时间项目组要用,于是就进行了一次封装,把几个常用的样式都调整好了,包括三种常用的图表类型都封装到一起了,项目组的其他人员只要处理好要显示的数据就行了。

web.xml设置:

 <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>

 柱状图封装和设置:

 public static JFreeChart getLineChart(String title, String xSubject, String ySubject, CategoryDataset dataset) {

    JFreeChart chart = ChartFactory.createLineChart(title, xSubject, ySubject, dataset, PlotOrientation.VERTICAL, true, true, false);

 

  LineRenderer3D renderer = new LineRenderer3D();

   renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());

   renderer.setItemLabelsVisible(true);

  renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER));

  CategoryPlot plot = chart.getCategoryPlot();

  CategoryAxis domainAxis = plot.getDomainAxis();   //domainAxis.setVerticalCategoryLabels(false);

   plot.setDomainAxis(domainAxis);

  ValueAxis rangeAxis = plot.getRangeAxis();   //设置最高的一个 Item 与图片顶端的距离

   rangeAxis.setUpperMargin(0.15);   //设置最低的一个 Item 与图片底端的距离

   rangeAxis.setLowerMargin(0.15);

   plot.setRangeAxis(rangeAxis);

  plot.setRenderer(renderer);   //设置透明度

   plot.setForegroundAlpha(0.4f);   //设置背景透明度

   plot.setBackgroundAlpha(0.8f);      //设置背景颜色

   chart.setBackgroundPaint(new Color(240,247,246));

  chart.setBackgroundImageAlpha(0.3f);

  return chart;

 }

 

调用代码:

 public JFreeChart getSingleChart(String chartType)  {

   //构造数据

   double[][] data = new double[1][7];

   for(int i = 0; i < 7; i ++)

   {    data[0][i] = Math.round(Math.random()*1000);   }

  //根据类型显示不同类型图表

   String[] rowKeys = new String[]{"Rule001"};

   String[] columnKeys = new String[]{"20日","21日","22日","23日","24日","25日","26日"};

   CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);

  if(chartType.equals("pole"))

   return com.util.MyChartFactory.getBarChart("校验规则统计", "日期", "案例(个)", dataset);

  else if(chartType.equals("line"))

   return com.util.MyChartFactory.getLineChart("校验规则统计", "日期", "案例(个)", dataset);

   else //if(chartType.equals("area"))

    return com.util.MyChartFactory.getAreaChart("校验规则统计", "日期", "案例(个)", dataset);

  }

页面代码:

<%@ page contentType="text/html; charset=gb2312" language="java" errorPage=""%> <%@ page import="org.jfree.chart.*,org.jfree.chart.servlet.ServletUtilities"%> <jsp:useBean scope="page" id="chartTest" class="test.ChartTest" /> <%  String chartType = request.getParameter("chartType");  if(chartType == null) chartType = "line";   JFreeChart chart = chartTest.getSingleChart(chartType); String filename = ""; String graphURL = "../images/nodata.gif"; if(chart != null) {  filename = ServletUtilities.saveChartAsPNG(chart, 800, 450, null, session);  graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; } %> <HTML>  <HEAD>   <title></title>   <LINK href="../include/site.css" type="text/css" rel="stylesheet">  </HEAD>  <body bottomMargin="0" leftMargin="0" topMargin="0" rightMargin="0">   <form name="myform" method="post" action="">    <table width="96%" border="0" align="center" cellpadding="0"     cellspacing="0">     <tr>      <td valign="top">       <TABLE class="td" style="WIDTH: 100%; HEIGHT: 21px"        cellSpacing="0" cellPadding="0" border="0">        <TR>         <TD class="tttable" colspan="3">          <TABLE id="Table1" style="WIDTH: 100%; HEIGHT: 40px"           cellSpacing="0" cellPadding="0" width="100%" align="right"           border="0">           <TR>            <TD vAlign="middle" noWrap>             <TABLE id="Table2" style="WIDTH: 100%; HEIGHT: 92.29%"              cellSpacing="0" cellPadding="0" width="100%" border="0">              <TR>               <TD style="WIDTH: 70px" noWrap align=center noWrap>                图表类型               </TD>               <TD noWrap>                <select name="chartType">                 <option value="line" <%if(chartType.equals("line"))out.print("selected");%>>折线图</option>                 <option value="pole" <%if(chartType.equals("pole"))out.print("selected");%>>柱状图</option>                 <option value="area" <%if(chartType.equals("area"))out.print("selected");%>>面积图</option>                </select>               </TD>               <TD>                &nbsp;<a href="#" οnclick="chkFrm();">                <img src="../images/btnQuery.gif" border="0" align="absmiddle"></a>                </TD>              </TR>             </TABLE>            </TD>           </TR>          </TABLE>         </TD>        </TR>        <TR>         <TD class="tttable" colspan="3">          <table width=100% border=1 class="mainFunctionTable"  cellpadding="0" cellspacing="1">           <tr height=25>            <td>              <img src="<%=graphURL%>" border=0 usemap="#<%=filename%>" align=center>            </td>           </tr>          </table>         </TD>        </TR>       </TABLE>      </td>     </tr>    </table>   </form>   <script> function chkFrm() {  document.myform.submit(); } </script> </body> </HTML>

Eclipse项打包下载

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值