08 10 Struts 2.x结合JFreechart绘图

在很多的系统之中,数据的统计结果报表时经常会出现的功能,但是在现在的开发之中,大部分都会基于HTML5的Canvas绘图功能完成,如果是直接绘图,那么基本上都很麻烦,所以可以使用大量的第三方开发包,在很早以前就存在有一个Java可用的统计图的工具——JFreeChart,是一个免费的绘图工具。

1 使用JFreeChart绘制一个图形

下面就使用此组件绘制一个最简单的图形显示。
范例:基本绘图

package org.lks.demo;

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

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;

public class CreatePieDemo {
	public static void main(String[] args) {
		DefaultPieDataset dataset = new DefaultPieDataset();
		dataset.setValue("Java", 30000);
		dataset.setValue("C", 50000);
		dataset.setValue(".NET", 1000);
		dataset.setValue("PHP", 8000);
		dataset.setValue("Node", 15000);
		JFreeChart chart = ChartFactory.createPieChart("xxx", dataset);
		chart.setTitle(new TextTitle("语言使用统计分布", new Font("宋体",Font.BOLD, 20)));
		try {
			ChartUtilities.saveChartAsJPEG(new File("D:" + File.separator + "pie.jpg"), chart, 500, 500);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

只要设置好数据,都可以按照同样的风格进行图形的展示。

2 在Struts 2.x中应用JFreeChart组件

Struts 2.x里面融合了大量的第三方的开发支持,所以哟关乎可以直接在Struts 2.x里面使用绘图操作,但是在增加Struts 2.x支持的时候需要选择好相应的开发包。

如果在Struts 2.x里面要使用绘图,那么就是将JSP页面作为显示图形的模板。
范例:定义一个PieAction

package org.lks.action;

import java.awt.Font;

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

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class PieAction extends ActionSupport {
	private JFreeChart chart;

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

	public JFreeChart getChart() {
		return chart;
	}

	public String create() {
		DefaultPieDataset dataset = new DefaultPieDataset();
		dataset.setValue("Java", 30000);
		dataset.setValue("C", 50000);
		dataset.setValue(".NET", 1000);
		dataset.setValue("PHP", 8000);
		dataset.setValue("Node", 15000);
		JFreeChart chart = ChartFactory.createPieChart("xxx", dataset); 
		chart.setTitle(new TextTitle("语言使用统计分布", new Font("宋体",Font.BOLD, 20)));
		return "jfree";
	}
}

范例:在struts.xml文件里面配置此Action

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="root" namespace="/" extends="struts-default">
		<result-types>
			<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
				<param name="height">500</param>
				<param name="width">500</param>
			</result-type>
		</result-types>
		<action name="PieAction" class="org.lks.action.PieAction">
			<result name="jfree" type="chart"/>
		</action>
	</package>
</struts>    

此时表示可以将Action里面设置的数据交给JFreeChart进行显示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章