Struts2从数据库获取数据显示JFreeChat饼图

package com.zrsd.query.action;

import java.awt.Font;
import java.util.Iterator;
import java.util.List;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;

import com.opensymphony.xwork2.ActionSupport;
import com.zrsd.action.base.PubAction;
import com.zrsd.model.Profitassign;

public class Chart2Action extends PubAction{
 private JFreeChart chart;
 List<Profitassign> profs;

 public JFreeChart getChart()throws Exception
 {
  double[] consProRate = {0.1,0.2,0.3};
  String[] pamname = {"a","b","c"};
  profs = companymgr.findProfitassignAll();   //从数据库获取数值
  
  Iterator<Profitassign> it = profs.iterator();
  Profitassign pro = new Profitassign();
  int i = 0;
  while(it.hasNext()){   
  pro = it.next();
    pamname[i] = pro.getPamname();
    consProRate[i] = pro.getConsProRate();
    i++;
  }
  
  chart = ChartFactory.createPieChart3D(
   "配送费利润分配百分比",  // ͼ图表标题
   getDataPieSetByProfitassign(consProRate, pamname), //数据
   true, // 是否显示图例
   false, //是否显示工具提示
   false //是否生成URL
  );
  
  //重新设置图标标题,改变字体
  chart.setTitle(new TextTitle("配送费利润分配百分比", new Font("黑体", Font.ITALIC , 22)));
  //ȡ��ͳ取得统计图标的第一个图例
  LegendTitle legend = chart.getLegend(0);
  //修改图例的字体
  legend.setItemFont(new Font("宋体", Font.BOLD, 14));
  //获得饼图的Plot对象
  PiePlot plot = (PiePlot)chart.getPlot();
  //设置饼图各部分的标签字体
  plot.setLabelFont(new Font("隶书", Font.BOLD, 18));
  //设定背景透明度(0-1.0之间)䣩
        plot.setBackgroundAlpha(0.9f);
  //设定前景透明度(0-1.0之间)䣩
        plot.setForegroundAlpha(0.40f);
  return chart;
 }

 public PieDataset getDataPieSetByProfitassign(double[] consProRate,
         String[] pamname)
 {
  
      if (consProRate != null && pamname != null)
       {
          if (consProRate.length == pamname.length)
            {
               DefaultPieDataset dataset = new DefaultPieDataset();
               for (int i = 0; i < consProRate.length-1; i++)
                  {
                     System.out.println("获取到饼图的数据");
                     dataset.setValue(pamname[i], consProRate[i]);
                    }
              
               return dataset;
             }
              }
           return null;
     }
}

你可能感兴趣的:(数据库,exception,struts,jfreechart,dataset,plot)