准备环境:

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaeclipse   3.6
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avamaven   3.0.4
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avastruts     2.1.8
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaJFreeChart  1.0.9
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava



JFreeChart 是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。目前 JFreeChart 的最新版本是 1.0.14,

最近几天不知为何,sourceforge 网站一直无法访问,JFreeChart 现在在官网下载不了了,本人已将现用版本和最新版本上传至网盘,需要的朋友可以点击链接下载:

JFreeChart-1.0.9  :http://115.com/file/e7194ucb#jfreechart-1.0.9.zip

JFreeChart-1.0.14:http://115.com/file/an8lwzqu#jfreechart-1.0.14.zip

据说,JFreeChart 从 1.0.10 版本开始,图表的中文字体会变成乱码,我用 1.0.13 和 1.0.14 两个版本测试的时候确实是会出现中文乱码,1.0.9 这个版本不会出现这种情况,

解决这个乱码的过程有点繁琐,而且每种不同的图表的解决方式还不一样,但有一点是一样的,就是修改默认的字体,让它支持中文字体的显示,这样乱码问题就解决了。

由于这里用的 1.0.9 这个版本不会出现中文乱码问题,所以在这里姑且不谈。接下来会用到 maven 来管理 jar 包,不使用 maven 的朋友可以直接将 struts2 和 JFreeChart 的

jar 包导进项目里就 OK 了,maven 不会影响接下来要谈的 JFreeChart 柱状图的生成。

JFreeChart 所必须的 jar 包:jcommon-1.0.12.jar、jfreechart-1.0.9.jar (这里说的是 JFreeChart  1.0.9 版本,版本不同的请自行对应 jar 包版本)

OK,废话不多说,直接进入主题:

JFreeChart 组件中有个JFreeChart类,它代表图表对象。生成任何类型的图表都要通过该对象,JFreeChart 组件提供了一个工厂类ChartFactory,用来创建各种类型的图表对象。

创建普通柱状图:ChartFactory.createBarChart( … )

创建 3D 柱状图:ChartFactory.createBarChart3D( … )

绘制 3D 柱状图的方法及方法入口参数:

ChartFactory.createBarChart3D(String title, String categoryAxisLabel, String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, 
                                                                    boolean legend, boolean tooltips, boolean urls)


参数1:String title  —— 图表标题
参数2:String categoryAxisLabel     ——   统计种类轴标题,可以理解为X轴标题
参数3:String valueAxisLabel            ——   统计值轴标题,可以理解为y轴标题
参数4:CategoryDataset dataset       ——   绘图数据集
参数5:PlotOrientation orientation ——   设定柱形图的绘制方向,PlotOrientation.VERTICAL(垂直),PlotOrientation.HORIZONTAL(水平)
参数6:boolean legend     ——   设定是否显示图例
参数7:boolean tooltips  ——   设定是否采用标准生成器
参数8:boolean urls          ——   设定是否包生成链接


创建 maven 项目(不使用 maven 的朋友在 myeclipse 创建 Web 项目,或在 eclipse 下创建动态 Web 项目),项目名起: jfreechart-demo

web.xml 配置:

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava<?xml version="1.0" encoding="UTF-8"?>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <!-- jfreechart -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <servlet> 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <servlet-name>DisplayChart</servlet-name> 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class> 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  </servlet> 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <servlet-mapping> 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <servlet-name>DisplayChart</servlet-name> 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <url-pattern>/DisplayChart</url-pattern> 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  </servlet-mapping> 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <!-- 开启Struts2监听 -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <filter>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <filter-name>struts2</filter-name>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  </filter>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <filter-mapping>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <filter-name>struts2</filter-name>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <url-pattern>/*</url-pattern>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  </filter-mapping>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <welcome-file-list>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <welcome-file>/index.jsp</welcome-file>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  </welcome-file-list>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava</web-app>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava



struts.xml 配置(这里使用了 Struts2 的 convention 插件来实现零配置,没有使用 convention 插件的朋友请自行配置相应的 action):

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava<?xml version="1.0" encoding="UTF-8" ?>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava<struts>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <constant name="struts.devMode" value="true"/>                                                  <!-- 开发模式 -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <constant name="struts.i18n.encoding" value="UTF-8"/>                                    <!-- Web运用编码 -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <constant name="struts.convention.result.path" value="/view/" />               <!-- 结果资源的路径 -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <constant name="struts.convention.action.name.separator" value="_" />  <!-- URL资源分隔符 -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <constant name="struts.convention.classes.reload" value="true" />              <!-- convention类重新加载 -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <constant name="struts.action.extension" value="action,do,html" />           <!-- 请求后缀 -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava</struts>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava



pom.xml 配置(不使用 maven 的朋友不用配置这个文件,直接将需要的 jar 包导进项目即可):

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava<project xmlns="http:///POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  xsi:schemaLocation
="http:///POM/4.0.0 http:///maven-v4_0_0.xsd">
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <modelVersion>4.0.0</modelVersion>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <groupId>com.fancy</groupId>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <artifactId>jfreechart-demo</artifactId>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <packaging>war</packaging>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <version>1.0</version>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <name>jfreechart-demo Maven Webapp</name>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <url>http://</url>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <properties>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <struts.version>2.1.8</struts.version>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  </properties>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <dependencies>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <!-- Struts2 framework -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <dependency>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <groupId>org.apache.struts</groupId>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <artifactId>struts2-core</artifactId>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <version>${struts.version}</version>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    </dependency>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <!-- Struts2 convention -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <dependency>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <groupId>org.apache.struts</groupId>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <artifactId>struts2-convention-plugin</artifactId>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <version>${struts.version}</version>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    </dependency>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <!-- servlet -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <dependency>     
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <groupId>javax.servlet</groupId>     
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <artifactId>servlet-api</artifactId>     
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <version>2.5</version> 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    </dependency>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <!-- JFreeChart -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <dependency>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <groupId>jfree</groupId>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <artifactId>jfreechart</artifactId>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <version>1.0.9</version>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    </dependency>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  </dependencies>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <build>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <finalName>jfreechar-demo</finalName>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <!-- Jetty Server -->
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <plugins>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      <plugin>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava        <groupId>org.mortbay.jetty</groupId>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava        <artifactId>maven-jetty-plugin</artifactId>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava        <version>6.1.10</version>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava        <configuration>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava          <scanIntervalSeconds>2</scanIntervalSeconds>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava        </configuration>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava      </plugin>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    </plugins>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  </build>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava</project>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava




JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avapackage com.fancy.action;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport java.util.Map;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport javax.servlet.http.HttpServletRequest;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport javax.servlet.http.HttpSession;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.apache.struts2.ServletActionContext;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.apache.struts2.interceptor.SessionAware;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport com.opensymphony.xwork2.ActionSupport;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ Maven3 _122/**
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * -----------------------------------------
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @描述  Action 超类
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @作者  fancy
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @邮箱  fancydeepin@yeah.net
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @日期  2012-8-6 <p>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * -----------------------------------------
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _129 
*/

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ Maven3 _130public class BaseAction extends ActionSupport implements SessionAware{
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123    private static final long serialVersionUID = 1L;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123    protected Map<String, Object> session;    //session
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _135    public void setSession(Map<String, Object> session) {
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        this.session = session;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _137    }

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _139    public HttpSession getHttpSession() {
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        HttpServletRequest request = ServletActionContext.getRequest();
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        return request.getSession();
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _137    }

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _129}

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava




核心类,主要看这里就行,你可以将 execute 方法里面的代码直接拷贝到 jsp 上面做测试)

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avapackage com.fancy.action;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport java.awt.Color;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.ChartFactory;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.JFreeChart;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.plot.PlotOrientation;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.servlet.ServletUtilities;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.data.category.CategoryDataset;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.data.general.DatasetUtilities;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _156/**
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * -----------------------------------------
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @描述  柱状图
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @作者  fancy
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @邮箱  fancydeepin@yeah.net
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @日期  2012-8-6 <p>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * -----------------------------------------
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _129 
*/

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _164public class CylinderAction extends BaseAction{
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123    private static final long serialVersionUID = 1L;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123    private String fileName;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123    
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava_169    public String execute() throws Exception{
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        //模拟数据
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava_172
        double[][] data  = {{1185,995,1286,1210},{916,1028,900,885},{982,763,935,665},{384,568,928,773}};
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ Maven3 _173        String[] rowKeys = {"A产品","B产品","C产品","D产品"};
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ Maven3 _174        String[] columKeys = {"E-1区","E-2区","E-3区","E-4区"};
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        //创建Dataset对象
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columKeys, data);
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        //创建3D柱状图
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
        JFreeChart chart = ChartFactory.createBarChart3D("2011年产品销售量", "", "销量/件", dataset, PlotOrientation.VERTICAL, truetruefalse);
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        //设置背景颜色
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
        chart.setBackgroundPaint(Color.WHITE);
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        fileName = ServletUtilities.saveChartAsPNG(chart, 700, 400, null, getHttpSession());
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        return "cylinder";
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _137    }

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_185    public String getFileName() {
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        return fileName;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _137    }

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _129}

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava



在 webapp 目录下创建 view 子目录,在 view 目录里创建 cylinder.jsp 文件(不使用 maven 的朋友 jsp 文件位置请自行对应)

cylinder.jsp 文件:

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _192<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava<html>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <head>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <title>柱状图</title>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  </head>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  <body>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    <img src="${pageContext.request.contextPath}/DisplayChart?filename=${fileName}" border=0 usemap="#${fileName}"> 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava    
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava  </body>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava</html>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava



访问:http://localhost:8080/jfreechart-demo/cylinder.html (没有使用 convention 插件的朋友,访问地址请自行对应)结果如图:
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _207

在上图中,可以大概的看出产品的销售量在哪个范围之内,但是并没有具体的数值,下面通过在 CylinderAction 类上添加代码来使得这些数值能够被显示:

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avapackage com.fancy.action;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport java.awt.Color;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.ChartFactory;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.JFreeChart;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.labels.ItemLabelAnchor;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.labels.ItemLabelPosition;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.plot.PlotOrientation;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.renderer.category.BarRenderer3D;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.chart.servlet.ServletUtilities;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.data.category.CategoryDataset;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.data.general.DatasetUtilities;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_avaimport org.jfree.ui.TextAnchor;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _223/**
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * -----------------------------------------
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @描述  柱状图
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @作者  fancy
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @邮箱  fancydeepin@yeah.net
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * @日期  2012-8-6 <p>
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123 * -----------------------------------------
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _129 
*/

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _231public class CylinderAction extends BaseAction{
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123    private static final long serialVersionUID = 1L;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123    private String fileName;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123    
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _236    public String execute() throws Exception{
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        //模拟数据
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_239
        double[][] data  = {{1185,995,1286,1210},{916,1028,900,885},{982,763,935,665},{384,568,928,773}};
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _240        String[] rowKeys = {"A产品","B产品","C产品","D产品"};
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _241        String[] columKeys = {"E-1区","E-2区","E-3区","E-4区"};
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        //创建Dataset对象
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columKeys, data);
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        //创建3D柱状图
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
        JFreeChart chart = ChartFactory.createBarChart3D("2011年产品销售量", "", "销量/件", dataset, PlotOrientation.VERTICAL, truetruefalse);
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        //设置背景颜色
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
        chart.setBackgroundPaint(Color.WHITE);
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        //创建柱体绘制器对象
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
        BarRenderer3D renderer = new BarRenderer3D();
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        //设置柱体数值可见
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
        renderer.setBaseItemLabelsVisible(true);
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        //调整数值显示位置
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
        renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        renderer.setItemLabelAnchorOffset(10D); 
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        chart.getCategoryPlot().setRenderer(renderer);
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        fileName = ServletUtilities.saveChartAsPNG(chart, 700, 400, null, getHttpSession());
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        return "cylinder";
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _137    }

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _263    public String getFileName() {
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123        return fileName;
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_Struts2 _137    }

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ JFreeChart_123
JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_JFreeChart _129}

JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava



再次访问:http://localhost:8080/jfreechart-demo/cylinder.html 结果如图:


JFreeChart 生成 柱状图(Struts2 + Maven3 + JFreeChart)_ava_269