JFreeChart的下载和安装与使用

 

Java Web 2.0架构开发与项目实战购书网http://product.dangdang.com/product.aspx?product_id=20697597

JFreeChart的下载地址为http://sourceforge.net/project/showfiles.php?group_id=15494,解压下载的jfreechart_1.0.9.zip包到指定位置,为了配置成功,需要lib目录中的jfreechart-1.0.9.jarjcommon-1.0.12.jar文件拷贝到TEST/WEB-INF/LIB中。 还需要插件:struts2-jfreechart-plugin-2.0.11.jar(struts2发布包的lib目录下可以找到)

10.21.3  使用JFreeChart

从配置文件开始:在struts.xml文件增加一个对生成图表包,如下

 

  

   

           300  

          240  

   

  

  

   

        300

        400

 

   

  

创建Action类,代码:

ipackage com.struts2.app;

import org.jfree.chart.JFreeChart;

import com.opensymphony.xwork2.ActionSupport;

public class ChartAction extends ActionSupport {

    private static final long serialVersionUID = 1L;

    private JFreeChart chart;

 

    @Override

    public String execute() throws Exception {

        chart = FruitService.createBarChart();

        return SUCCESS;

    }

    public JFreeChart getChart() {

        return chart;

    }

}

 

package com.struts2.app;

import org.jfree.chart.JFreeChart;

 

import com.opensymphony.xwork2.ActionSupport;

public class PieAction extends ActionSupport{

     private static final long serialVersionUID = 1L;  

        private JFreeChart chart; 

        public String execute() throws Exception {  

            chart = FruitService.createPaiChart();  

            return SUCCESS;  

        }  

        public JFreeChart getChart() {  

            return chart;  

        }  

    }

 

package com.struts2.app;

import java.awt.BasicStroke;

import java.awt.Color;

import java.text.DecimalFormat;

import java.text.NumberFormat;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.labels.StandardPieSectionLabelGenerator;

import org.jfree.chart.labels.StandardPieToolTipGenerator;

import org.jfree.chart.plot.PiePlot;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.data.category.CategoryDataset;

import org.jfree.data.category.DefaultCategoryDataset;

import org.jfree.data.general.DefaultPieDataset;

public class FruitService {

    public static JFreeChart createBarChart() {

        CategoryDataset dataset = getDataSet2();

        JFreeChart chart = ChartFactory.createBarChart3D(

                "水果产量图", // 图表标题

                "水果", // 目录轴的显示标签

                "产量", // 数值轴的显示标签

                dataset, // 数据集

                PlotOrientation.VERTICAL, // 图表方向:水平、垂直

                true,   // 是否显示图例(对于简单的柱状图必须是false)

                true,   // 是否生成工具

                true    // 是否生成URL链接

                );

        return chart;

    }

 

    private static CategoryDataset getDataSet2() {

        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        dataset.addValue(100, "北京", "苹果");

        dataset.addValue(100, "上海", "苹果");

        dataset.addValue(100, "广州", "苹果");

        dataset.addValue(200, "北京", "梨子");

        dataset.addValue(200, "上海", "梨子");

        dataset.addValue(200, "广州", "梨子");

        dataset.addValue(300, "北京", "葡萄");

        dataset.addValue(300, "上海", "葡萄");

        dataset.addValue(300, "广州", "葡萄");

        dataset.addValue(400, "北京", "香蕉");

        dataset.addValue(400, "上海", "香蕉");

        dataset.addValue(400, "广州", "香蕉");

        dataset.addValue(500, "北京", "荔枝");

        dataset.addValue(500, "上海", "荔枝");

        dataset.addValue(500, "广州", "荔枝");

        return dataset;

    }

    public static JFreeChart createPaiChart() {

        DefaultPieDataset data = getDataSet();

        JFreeChart chart = ChartFactory.createPieChart3D("水果产量图",  // 图表标题

        data,

        true, // 是否显示图例

        false,

        false

        );

        PiePlot plot = (PiePlot) chart.getPlot();

        resetPiePlot(plot);

        return chart;

    }

   

    private static void resetPiePlot(PiePlot plot) {

        String unitSytle = "{0}={1}({2})";

       

        plot.setNoDataMessage("无对应的数据,请重新查询。");

        plot.setNoDataMessagePaint(Color.red);

       

        //指定 section 轮廓线的厚度(OutlinePaint不能为null)

        plot.setOutlineStroke(new BasicStroke(0));

        //设置第一个 section 的开始位置,默认是12点钟方向

        plot.setStartAngle(90);        

 

        plot.setToolTipGenerator(new StandardPieToolTipGenerator(unitSytle,

                NumberFormat.getNumberInstance(),

                new DecimalFormat("0.00%")));

       

        //指定图片的透明度

        plot.setForegroundAlpha(0.65f);

       

        //引出标签显示样式

        plot.setLabelGenerator(new StandardPieSectionLabelGenerator(unitSytle,

                NumberFormat.getNumberInstance(),

                new DecimalFormat("0.00%")));

           

        //图例显示样式

        plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(unitSytle,

                NumberFormat.getNumberInstance(),

                new DecimalFormat("0.00%")));

    }

 

    private static DefaultPieDataset getDataSet() {

        DefaultPieDataset dataset = new DefaultPieDataset();

        dataset.setValue("苹果",100);

        dataset.setValue("梨子",200);

        dataset.setValue("葡萄",300);

        dataset.setValue("香蕉",400);

        dataset.setValue("荔枝",500);

        return dataset;

    }

 

}

 

 

jsp页面表现输出图片

<%@ page contentType="text/html; charset=UTF-8"%>

   

        ListAllFruit4BarAndPie

   

   

       

           

                使用柱图和饼图列取所有水果产量

           

       

        柱图:

       

       

        饼图:

       

   

你可能感兴趣的:(Java,Web2.0架构开发与项目实战)