除了ssh必须的包之外,还需要导入以下3个包:
jfreechart-1.0.14.jar;
jcommon-1.0.17.jar;
struts2-jfreechart-plugin-2.2.3.1.jar;
以球类投票的方式引入柱状图和饼图。
球类类别实体代码:
public class Category {
private int id; //id主键
private String sportsName; //种类名称
private int num; //投票数目
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSportsName() {
return sportsName;
}
public void setSportsName(String sportsName) {
this.sportsName = sportsName;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
投票页面jsp代码:
投票action代码:
public String jFreeChartTest1() {
String[] sports = ServletActionContext.getRequest().getParameterValues("sportsName");
if(sports != null) {
for(int i=0; i
投票struts.xml代码:
/showChart.jsp
图表显示页面showChart.jsp代码:
图表显示action代码:
private JFreeChart chart; //取JFreeChart对象,名字必须为chart
public JFreeChart getChart() {
return chart;
}
public void setChart(JFreeChart chart) {
this.chart = chart;
}
/**
* 解决乱码,但是一定要在生成图形之前调用
*/
public void setCharacter() {
// 创建主题样式
StandardChartTheme standardChartTheme = new StandardChartTheme("CN");
// 设置标题字体
standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 12));
// 设置图例的字体
standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 12));
// 设置轴向的字体
standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 12));
// 应用主题样式
ChartFactory.setChartTheme(standardChartTheme);
}
1.柱状图:
public String jFreeChartTest2() {
setCharacter(); //解决中文乱码
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.setValue(service.getCategoryByName("篮球").getNum(), "", "篮球");
dataset.setValue(service.getCategoryByName("足球").getNum(), "", "足球");
dataset.setValue(service.getCategoryByName("排球").getNum(), "", "排球");
dataset.setValue(service.getCategoryByName("网球").getNum(), "", "网球");
chart = ChartFactory.createBarChart3D(
"球类爱好图", // 图表标题
"球类", // 目录轴的显示标签
"喜爱人数", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是 false)
false, // 是否生成工具
false // 是否生成 URL 链接
);
return "success";
}
2.饼图:
public String jFreeChartTest2() {
setCharacter();
DefaultPieDataset dataPieSet = new DefaultPieDataset();
dataPieSet.setValue("篮球", service.getCategoryByName("篮球").getNum());
dataPieSet.setValue("足球", service.getCategoryByName("足球").getNum());
dataPieSet.setValue("排球", service.getCategoryByName("排球").getNum());
dataPieSet.setValue("网球", service.getCategoryByName("网球").getNum());
chart = ChartFactory.createPieChart3D("球类爱好图", dataPieSet, true, true, false);
PiePlot3D piePlot = (PiePlot3D)chart.getPlot();
piePlot.setBackgroundPaint(Color.WHITE);
piePlot.setLabelFont(new Font("黑体",Font.BOLD,15));
resetPlot(piePlot);
return "success";
}
//给饼图添加样式
private static void resetPlot(PiePlot3D pieplot){
String unitStyle = "{0}={1}({2})";
pieplot.setNoDataMessage("没有对应的数据,请重新查询");
pieplot.setNoDataMessageFont(new Font("华文行楷",Font.BOLD,21));
pieplot.setNoDataMessagePaint(Color.BLUE);
//设置图例显示样式
pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(
unitStyle,
NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%"))
);
//设置引用标签显示样式
pieplot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(
unitStyle,
NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));
}
图表显示struts.xml代码:
注意:package要继承jfreechart-default
600
500
结束。