在很多的系统之中,数据的统计结果报表时经常会出现的功能,但是在现在的开发之中,大部分都会基于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进行显示。