Struts2---JFreeChart绘图组件

JFreeChart基本使用

报表组件,而且是一个免费的报表组件.

在这里插入图片描述

  • 编写一个饼状图
  • 将JFReeChart的lib下的jar包拷贝到项目的WEB-INFO/lib下
package mao.shu.demo;

import java.awt.Font;
import java.io.File;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;

public class JFCDemo {
	public static void main(String[] args) {
				DefaultPieDataset dataset = new DefaultPieDataset();
				//添加数据
				dataset.setValue("java",4000);
				dataset.setValue("c/c++",3000);
				dataset.setValue(".NET",1500);
				dataset.setValue("other",1500);
				JFreeChart chart = ChartFactory.createPieChart3D("程序开发使用语言所占比", //主标题的名称
						                      dataset, //图标显示的数据集合
						                      true,//是否显示子标题 
						                      true,//是否生成提示的标签 
						                      true); //是否生成URL链接
				//处理图形上的乱码
				//处理主标题的乱码
				chart.getTitle().setFont(new Font("宋体",Font.BOLD,18));
				//处理子标题乱码
				chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,15));
				//获取图表区域对象
				PiePlot3D categoryPlot = (PiePlot3D)chart.getPlot();
				//处理图像上的乱码
				categoryPlot.setLabelFont(new Font("宋体",Font.BOLD,15));
				//设置图形的生成的数据文件信息,{0}表示每个数据的名称,{1}表示数据值,{2}表示所占x% 百分比
				String format = "{0} {1} ({2})";
				categoryPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(format));
				
				//在E盘目录下生成图片
				File file = new File("e:/pie.jpg");
				try {
					ChartUtilities.saveChartAsJPEG(file, chart, 500, 500);
				} catch (IOException e) {
					e.printStackTrace();
				}
				//使用ChartFrame对象显示图像
				ChartFrame frame = new ChartFrame("饼状图",chart);
				frame.setVisible(true);
				frame.pack();
	}

}

  • 运行结果

在这里插入图片描述

JFreeChart结合Struts2使用

  • 在struts2之中使用jfreechart除了需要用到JFreeChart基本的开发包之外,还需要使用到以下的开发包(版本可以使其他版本)

    1. struts2-jfreechart-plugin-2.0.6.jar
  • 创建一个Action类,在Action类之中需要做以下操作

    • 创建JFreeChart对象,并将其保存在类属性之中,类属性的名称为"char",这是固定的名称.
package mao.shu.action;

import java.awt.Font;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;

import com.opensymphony.xwork2.ActionSupport;

public class JFCAction extends ActionSupport {
	private JFreeChart chart;

	public String doCreate(){
		DefaultPieDataset dataset = new DefaultPieDataset();
		//添加数据
		dataset.setValue("java",4000);
		dataset.setValue("c/c++",3000);
		dataset.setValue(".NET",1500);
		dataset.setValue("other",1500);
		 this.chart = ChartFactory.createPieChart3D("程序开发使用语言所占比", //主标题的名称
				                      dataset, //图标显示的数据集合
				                      true,//是否显示子标题 
				                      true,//是否生成提示的标签 
				                      true); //是否生成URL链接
			//处理图形上的乱码
			//处理主标题的乱码
			chart.getTitle().setFont(new Font("宋体",Font.BOLD,18));
			//处理子标题乱码
			chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,15));
			//获取图表区域对象
			PiePlot3D categoryPlot = (PiePlot3D)chart.getPlot();
			//处理图像上的乱码
			categoryPlot.setLabelFont(new Font("宋体",Font.BOLD,15));
			//设置图形的生成的数据文件信息,{0}表示每个数据的名称,{1}表示数据值,{2}表示所占x% 百分比
			String format = "{0} {1} ({2})";
			categoryPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(format));
			
		return SUCCESS;
	}
	
	public JFreeChart getChart() {
		return chart;
	}

	public void setChart(JFreeChart chart) {
		this.chart = chart;
	}
	
	
}

  • 配置struts.xml文件
    • 其中<result-type> 标签之中的配置的class类就是在struts2-jfreechart-plugin-2.0.6.jar开发包之中有定义,所以如果没有导入开发包,将无法使用
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
	 <package name="root" namespace="/" extends="struts-default">
 
      <result-types>
           <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type>
       </result-types>
	 
     <action name="JFCAction" class="mao.shu.action.JFCAction">
  		<result type="chart" name="success">
  			<param name="width">500</param>
  			<param name="height">500</param>
  		</result>
     </action>  
         
 </package>
</struts>

在这里插入图片描述

  • 在Struts2.x里面执行的过程实际上就是自己编写了一个页面,而后将Action中创建好的JFreeChart创建好的对象的内容进行绘图展示处理.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值