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進行顯示。

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