在很多的系統之中,數據的統計結果報表時經常會出現的功能,但是在現在的開發之中,大部分都會基於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進行顯示。