一.增加的jar包

  • struts2-jfreechart-plugin-2.1.6.jar      在struts2的相应jar包中找
  • jcommon-1.0.23.jar                         在jfreechart官网中找
  • jfreechart-1.0.19.jar                         在jfreechart官网中找

jfreechart 的相应jar包地址:http://pan.baidu.com/s/1gfygIob

相应的jsp页面:

<img src="${pageContext.request.contextPath}/jfreechart.action?id=<s:property value="vote.id"/>" />

相应的struts.xml配置:(需要注意的是头文件要改下从箭头中的xml中引入

<package name="jfreechart" extends="jfreechart-default" namespace="/">
<action name="jfreechart" class="jfreeChartAction">
<result name="success" type="chart">
<param name="width">700</param>
<param name="height">250</param>
</result>
</action>
</package>

相应的action:

package action;

import java.util.List;

import jfreechart.JfreeChartService;

import org.apache.struts2.ServletActionContext;
import org.jfree.chart.JFreeChart; import service.SelectionService;
import service.VoteService;
import vo.Selection; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings ( "serial" )
public class JfreeCharAction extends ActionSupport { /**
* 定 义JFreeChart对象注意在这里JFreeChart对象名只能为chart
* http://struts.apache.org/2.x/docs/jfreechart-plugin.html
*/
private JFreeChart chart; public JFreeChart getChart() {
return chart;
}
public void setChart(JFreeChart chart) {
this .chart = chart;
} private VoteService voteService ;
private SelectionService selectionService ; public void setVoteService(VoteService voteService) {
this.voteService = voteService;
}
public void setSelectionService(SelectionService selectionService) {
this.selectionService = selectionService;
} private JfreeChartService jfreeChartService ;
public void setJfreeChartService(JfreeChartService jfreeChartService) {
this.jfreeChartService = jfreeChartService;
} private List<Selection> select_list ; @Override
public String execute() throws Exception {
Integer id = Integer.valueOf(ServletActionContext.getRequest()
.getParameter("id"));
select_list = selectionService.find(id);
this .chart = jfreeChartService.getChart(select_list);
return SUCCESS;
}
}

相应的service:
   这里的注意点是很容易出现乱码,改下font就ok

package jfreechart;

import java.awt.Color;
import java.awt.Font;
import java.util.List; import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.TextAnchor; import vo.Selection; public class JfreeChartService { public JFreeChart getChart(List<Selection> select_list){ DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for(int i = 0 ; i < select_list.size() ; i ++){ dataset.addValue(select_list.get(i).getNumber(),select_list.get(i).getIndex_()+"",select_list.get(i).getContent());
}
JFreeChart chart = ChartFactory.createBarChart("投票结果图",
"选项",
"票数(个)",
dataset,
PlotOrientation.HORIZONTAL,
false,
false,
false); CategoryPlot plot = chart.getCategoryPlot();
//设置网格背景颜色
plot.setBackgroundPaint(Color.white);
//设置网格竖线颜色
plot.setDomainGridlinePaint(Color.pink);
//设置网格横线颜色
plot.setRangeGridlinePaint(Color.pink); //显示每个柱的数值,并修改该数值的字体属性
BarRenderer renderer = new BarRenderer();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true); //默认的数字显示在柱子中,通过如下两句可调整数字的显示
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.BASELINE_RIGHT));
renderer.setItemLabelAnchorOffset(20D);
plot.setRenderer(renderer); //下面这段是防止出现乱码的
Font font = new Font("宋体", Font.ITALIC, 12);
CategoryAxis domainAxis = plot.getDomainAxis();//(柱状图的x轴)
domainAxis.setTickLabelFont(font);//设置x轴坐标上的字体
domainAxis.setLabelFont(font);//设置x轴上的标题的字体
ValueAxis valueAxis = plot.getRangeAxis();//(柱状图的y轴)
valueAxis.setTickLabelFont(font);//设置y轴坐标上的字体
valueAxis.setLabelFont(font);//设置y轴坐标上的标题的字体
chart.getTitle().setFont(font);
return chart ;
} }

最后效果是:

jfreechart 整合sturts2牛刀小试的更多相关文章

  1. 【Java EE 学习 74 下】【数据采集系统第六天】【使用Jfreechart的统计图实现】【将JFreechart整合到项目中】

    之前说了JFreechart的基本使用方法,包括生成饼图.柱状统计图和折线统计图的方法.现在需要将其整合到数据采集系统中根据调查结果生成三种不同的统计图. 一.统计模型的分析和设计 实现统计图显示的流 ...

  2. struts2整合JFreechart 饼图、折线图、柱形图

    struts2整合JFreechart 饼图.折线图.柱形图 上效果图: 当然可以将数据导出图片格式存储.具体下的链接里的文件有保存成图片的操作. 因为是strust2整合JFreechart,所以s ...

  3. [六]JFreeChart实践五之与Struts2整合

    1.Action,返回Chart package com.java1234.chart.bar; import java.awt.Color; import org.jfree.chart.Chart ...

  4. struts2整合jfreechart

    需要的包: struts2-jfreechart-plugin-2.2.1.1.jar jfreechart-1.0.13.jar jcommon-1.0.17.jar 前台jsp页面中可以使用ifr ...

  5. Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试

    承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. github地址为ssm-demo 你也可以先体验一下实际效果,点击这里就行啦 账号:admin 密码:1 ...

  6. Spring+SpringMVC+MyBatis整合基础篇(二)牛刀小试

    前言 承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. 项目展示地址,点这里http://ssm-demo.13blog.site,账号:admin 密码: ...

  7. java项目中显示图表:struts2整合jfreechart

    需要的包: struts2-jfreechart-plugin-2.2.1.1.jar jfreechart-1.0.13.jar jcommon-1.0.17.jar 前台jsp页面中可以使用ifr ...

  8. (五)sturts2+spring整合

    一.Spring与Struts的整合 1.1:加入Spring的jar包.1.2:加入Struts的jar包.1.3:加入Struts与Spring的整合jar//struts2-spring-plu ...

  9. JFreeChart与struts2整合实例

    1. 3个jar包 jcommon,jfreechart,strust2-jfreechart-plugin 2 <?xml version="1.0" encoding=& ...

随机推荐

  1. 使用Git命令上传本地项目

    前提,安装git,使用cmd进入项目根目录. 初始化git init 再添加文件git add .git commit -m '项目名' 上传项目到Github仓库git remote add ori ...

  2. Oracle死锁处理

    SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#, l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS,b.O ...

  3. Dev tdxDBTreeView

    可以快速的用tree展示层次结构,无需任何编码;对tree的操作会自动post到数据集:对数据集的操作会 在tree上表现 一.关键 设置 datasource displayField:节点的   ...

  4. thinkphp修改及编写标签库,编辑器的使用

    在view目录下创建Index_aaa.html <!DOCTYPE html> <html> <head> <meta charset="UTF- ...

  5. NSQ的消息订阅发布测试

    在测试NSQ的Quick Start发现这样一个问题,就是同时只能有一个订阅实例 $ nsq_to_file --topic=test --output- 当存在两个实例时则消息会被发送给其中的一个实 ...

  6. Android框架中的广播机制

    一.广播通过Intent发送出去 // 定义广播的意图过滤器 private String action = "com.xxx.demo.Broadcast.STATUS_CHANGED&q ...

  7. ---Java 678

    sudo add-apt-repository ppa:webupd8team/java sudo apt-get update udo apt-key adv --recv-key --keyser ...

  8. 修改C# 新建类模板

    找到安装路径下的这个文件夹:D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplatesCache\CSh ...

  9. 转自pnljs 委托(Func<int,bool>)

    随笔- 147 文章- 0 评论- 16 Func的介绍   经常看到  Func<int, bool>...这样的写法,看到这样的就没有心思看下去了.我们学技术还是需要静下心来. 对Fu ...

  10. CentOS7安装问题及解决方案记录

    CentOS7系统已安装好: 一.我想要实现系统桌面化. 需要运行 yum 命令. 出现第一个error: 1.提示错误:can not find a valid baseurl 86_X64.... ...