JFreeChart生成饼图,柱图效果!sturts2整合jfreechart插件测试

首先要去官网下载所需要的jar包   http://www.jfree.org/jfreechart/

生成饼图:

package jFreeTest;

import java.awt.Font;

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

public class Test1 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//默认饼图数据集
		DefaultPieDataset dpd=new DefaultPieDataset();
		
		dpd.setValue("市场部",25);
		dpd.setValue("IT部",50);
		dpd.setValue("财务部",30);
		dpd.setValue("其它部",25);
		
		JFreeChart jfc=ChartFactory.createPieChart3D
				("某公司人员组织结构图",dpd,true,true,false);
		  Font font = new Font("黑体", 1, 20);
		  
		  jfc.getTitle().setFont(font);
		  
		  ((PiePlot)jfc.getPlot()).setLabelFont(font);
		  
		/*  PiePlot pieplot = (PiePlot)jfc.getPlot();
		  pieplot.setLabelFont(font);  */
		  
		 jfc.getLegend().setItemFont(new Font("宋体",2,18));
		        
		        
	     ChartFrame chartFrame=new ChartFrame("s司人员结构图s",jfc);
		
		
		
		chartFrame.pack();
		
	//chartFrame.setFont(font);
		
		chartFrame.setVisible(true);
		

	}

}



柱图

package jFreeTest;

import java.awt.Font;

import javax.swing.JPanel;



import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;

public class Test2 extends ApplicationFrame {

	//构造函数
	public Test2(String title) {
		super(title);
		
		//将面版存放到 内容面版中
		this.setContentPane(createJPanel());
		
	}


	//创建数据集category 分类
	public static CategoryDataset createDataset(){
		DefaultCategoryDataset category =new DefaultCategoryDataset();
		category.setValue(20, "管理人员a", "管理人员");
		category.setValue(30, "IT人员b", "IT人员");
		category.setValue(50, "人事人员c", "人事人员");
		category.setValue(20, "财务人员d", "财务人员");
		return category;
	}
	
	
	//创建JFreeChart 图对象
	public static JFreeChart createJFreeChart(CategoryDataset  category){
		
	//构建JFreeChart 对象
	JFreeChart jfreeChart=ChartFactory.createBarChart3D("hello", "人员分布","人员数量", 
			category, PlotOrientation.VERTICAL, true, true,false);	
	
	//对值重置
	jfreeChart.setTitle(new TextTitle("某公司人员图",
			new Font("黑体",Font.BOLD +Font.ITALIC, 20)));
	//分类图
	CategoryPlot plot=(CategoryPlot)jfreeChart.getPlot();
	
	
	//领域轴
	CategoryAxis axis=plot.getDomainAxis();
	axis.setLabelFont(new Font("宋体",Font.PLAIN,18));
	axis.setTickLabelFont(new Font("宋体",Font.PLAIN,15));
	
	//设置Y坐轴
	plot.getRangeAxis().setLabelFont(new Font("宋体",Font.BOLD,18));//设置y轴坐标上的标题的字体
	//设置y轴坐标上的字体
	plot.getRangeAxis().setTickLabelFont(new Font("宋体",Font.BOLD,15));
	//lagend
	jfreeChart.getLegend().setItemFont(new Font("宋体",Font.BOLD,12));
	
	
	return jfreeChart;
		
	}
	
	
	/**
	 * 面版 存放jfree cahrt
	 * @param args
	 */
	public static JPanel createJPanel(){
		//创建JFreeChart
		JFreeChart jfc=createJFreeChart(createDataset());
		
		JPanel j= new ChartPanel(jfc);
		
		return j;
	}
	
	
	
	public static void main(String[] args) {
	//执行 生成类的实列
		Test2 test2=new Test2("hello world...");
		test2.pack();
		test2.setVisible(true);
	
	}

}


生成图片

:

package jFreeTest;

import java.awt.Font;
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;

public class ImageTest3 {
	
	//Dataset
	public static DefaultPieDataset createPinDateset(){
		DefaultPieDataset dpd=new DefaultPieDataset();
		dpd.setValue("市场部",15);
		dpd.setValue("IT部",20);
		dpd.setValue("财务部",120);
		dpd.setValue("其它部",125);
		return dpd;
		
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception
	{
	 JFreeChart jfc=ChartFactory.createPieChart3D("公司部门统计图", createPinDateset(), 
			 true, true, false);
	 //设置 标题字体
	 jfc.getTitle().setFont(new Font("微软雅黑",Font.BOLD,25));
	 
	 //polt 图
	 PiePlot pp=(PiePlot) jfc.getPlot();
	 pp.setLabelFont(new Font("微软雅黑",Font.BOLD,15));
	 
	 //图例字体
	 jfc.getLegend().setItemFont(new Font("微软雅黑",Font.BOLD,15));
	 
	/* ChartFrame cf=new ChartFrame("",jfc);
	 cf.pack();
	 cf.setVisible(true);*/
	 
	 //输出图片
	 OutputStream os=new FileOutputStream("Company.jpg");
	 //图表 实用工具
	 ChartUtilities.writeChartAsJPEG(os, jfc, 1000, 800);
	 
	 os.close();

	}

}

和strtus2整合,在项目中应用:

页面代码:

<%@ page language="java" contentType="text/html"    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Chart Test</h1>
<s:form action="showTick.action"  method="post">
<s:checkbox name="interest" label="蓝球" fieldValue="nanqiu" labelposition="left"/>
<s:checkbox name="interest" label="足球" fieldValue="zhuqiu" labelposition="left"/>
<s:checkbox name="interest" label="羽毛球" fieldValue="ymq" labelposition="left"/>
<s:checkbox name="interest" label="游泳" fieldValue="youyong" labelposition="left"/>
<s:submit value="提交"/>
</s:form>
</body>
</html>

struts.xml文件:

<?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>
	<package name="default"  extends="jfreechart-default, jasperreports-default">
	
	<action name="showTick" class="strutsAction.ShowTick">
	<result name="success"  type="chart">
	 <param name="width">800</param>
     <param name="height">600</param> 
     </result>
     
	</action>
	
	<!-- jasperReport -->
	<action name="showReport" class="strutsAction.ShowRepeort">
	<result name="success" type="jasper">
	<param name="location">test.jasper</param>
	<param name="dataSource">list</param>
	<param name="format">PDF</param>
	
	</result>
	</action>
	
	</package>
	
	</struts>

action实现类代码:

package strutsAction;

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


import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ShowTick extends ActionSupport {
	
	//jfreecha
	private JFreeChart chart;

	public JFreeChart getChart() {
	
		chart=ChartFactory.createBarChart("兴趣统计结果", "项目","结果",
				this.createDatasetss(),
				PlotOrientation.VERTICAL, 
				true, 
				true,
				false);
		
		
		if(null==chart){
			throw new RuntimeException("chart怎么会是空呢,你大爷爷的---------");
			
		}
		//设置字体
		chart.setTitle(new TextTitle("兴趣统计结果",new Font("宋体",Font.BOLD,20)));
		
		//x
		CategoryPlot cp=(CategoryPlot)chart.getPlot();
		CategoryAxis axis=cp.getDomainAxis();
		axis.setLabelFont(new Font("宋体",Font.BOLD,18));
		axis.setTickLabelFont(new Font("宋体",Font.BOLD,15));
		
		//设置文字倾多少度
		axis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
		
		//y
		cp.getRangeAxis().setLabelFont(new Font("宋体",Font.BOLD,18));
		cp.getRangeAxis().setTickLabelFont(new Font("宋体",Font.BOLD,15));
		//legend
		chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,20));
		
		return chart;
	}

	

	private List<String> interest;
	
	public List<String> getInterest() {
		return interest;
	}

	public void setInterest(List<String> interest) {
		this.interest = interest;
	}

	@Override
	public String execute() throws Exception {
		
		return SUCCESS;
	}
	
	计算投票 并入入aplication
	public void interestResult(List<String> interests){
		ActionContext ac=ActionContext.getContext();
		Map mp=ac.getApplication();
	
		for(String str:interests){
		
		if(!mp.containsKey(str)){
			mp.put(str, 1);
		}else{
			mp.put(str, (Integer)mp.get(str)+1);
		}
		}
	}
	
	//获取数据集
	public CategoryDataset createDatasetss(){
	
		
	DefaultCategoryDataset dcd=new DefaultCategoryDataset();
	//计算投票
	this.interestResult(this.getInterest());
	
	
	//获取application
	ActionContext ac=ActionContext.getContext();
	Map map =ac.getApplication();
	
	//设置值
	//System.out.println("1:"+(Integer)map.get("nanqiu"));
	dcd.setValue((Integer)map.get("nanqiu"), "蓝","蓝球");
	dcd.setValue((Integer)map.get("zhuqiu"), "足","足球");
	dcd.setValue((Integer)map.get("ymq"), "羽毛","羽毛球");
	dcd.setValue((Integer)map.get("youyong"), "游泳","游泳");
	
	/*dcd.setValue(5,"","蓝球");
	dcd.setValue(6, "","足球");
	dcd.setValue(34, "","羽毛球");
	dcd.setValue(21, "","游泳");*/
		
	return dcd;
	}
	
	

}








  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值