`
269629151
  • 浏览: 121870 次
社区版块
存档分类
最新评论

struts2整合jfreechart柱状图不能显示数值问题

    博客分类:
  • web
阅读更多

struts2整合jfreechart时柱状图出现不能显示数值问题,主要是由于数值过大,超过柱子宽度,所以就不显示了。

 

解决办法:

 

调整下面3处的数值 

构建图标类中 

BarRenderer3D  custombarrenderer3d=new BarRenderer3D();

a处、   custombarrenderer3d.setMaximumBarWidth(0.06); 
b处、  custombarrenderer3d.setItemMargin(0.0000005); 

 

struts 配置文件中

          <param name="width">1300</param>  调节宽度

 

 

下面附一个简单的例子

 

创建图表的类  通过getChart得到图表

/**
 * FruitService.java
 * com.lin.jfreecahrt
 * zlj
 * Jul 19, 2012   
 *
 */


package com.lin.jfreecahrt;

import java.awt.Color;
import java.awt.Font;
import java.util.EventObject;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
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.BarRenderer3D;
import org.jfree.chart.renderer.category.LayeredBarRenderer;

import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.ui.TextAnchor;


/*
 *   java.awt.Font,
                org.jfree.chart.ChartFactory,
                org.jfree.chart.JFreeChart,
                org.jfree.chart.plot.PlotOrientation,
                org.jfree.chart.servlet.ServletUtilities,
                org.jfree.data.CategoryDataset,
                org.jfree.data.DatasetUtilities,
                org.jfree.chart.plot.CategoryPlot,
                org.jfree.chart.axis.CategoryAxis,
                org.jfree.chart.axis.ValueAxis,
                org.jfree.chart.renderer.BarRenderer3D,
                org.jfree.chart.labels.StandardCategoryItemLabelGenerator,
                org.jfree.chart.axis.AxisLocation
 */

/**
 * Class FruitService
 * @author zlj
 * @version
 * @Date Jul 19, 2012 3:19:50 PM
 */

public class FruitService {
 private JFreeChart chart=null;
 /**
  *
  */
 public FruitService(){
 }
 public DefaultCategoryDataset getDataSet(){
  
  DefaultCategoryDataset  date=new DefaultCategoryDataset ();
  date.addValue(700000, "一月", "java编程思想");
  date.addValue(700000, "一月", "java核心技术");
  date.addValue(700000, "一月", "设计模式");
  
  
  
  date.addValue(900000, "二月", "java编程思想");
  date.addValue(900000, "二月", "java核心技术");
  date.addValue(900000, "二月", "设计模式");
  
  
  date.addValue(1100000, "三月", "java编程思想");
  date.addValue(1100000, "三月", "java核心技术");
  date.addValue(1100000, "三月", "设计模式");
  
  /*
  date.addValue(1000, "四月", "java编程思想");
  date.addValue(1000, "四月", "java核心技术");
  date.addValue(1000, "四月", "设计模式");
  
  
  date.addValue(800, "五月", "java编程思想");
  date.addValue(800, "五月", "java核心技术");
  date.addValue(800, "五月", "设计模式");*/
  return date;
 }

 public JFreeChart getChart() {
 // CategoryDataset data=getDataSet();
  
 
  
  
  chart=ChartFactory.createBarChart3D(
    "图书销量图表",  //图标标题
    "月份",//x轴变量显示名称
    "销量", //y轴变量显示名称
    getDataSet(), //要显示的数据
    PlotOrientation.VERTICAL,//显示方向  水平、垂直
    true,// 是否显示图例(对于简单的柱状图必须是false) 
    false,//是否生成工具
    false//是否生成url
  );
  
  BarRenderer3D  custombarrenderer3d=new BarRenderer3D();
  custombarrenderer3d.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());//显示每个柱的数值
  custombarrenderer3d.setBaseItemLabelsVisible(true);
  //注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
  custombarrenderer3d.setBasePositiveItemLabelPosition(new ItemLabelPosition(
  ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
  custombarrenderer3d.setItemLabelAnchorOffset(10D);// 设置柱形图上的文字偏离值
  custombarrenderer3d.setItemLabelsVisible(true);
  custombarrenderer3d.setBaseItemLabelPaint(Color.BLUE);// 设置数值色彩,默认黑色
  custombarrenderer3d.setMaximumBarWidth(0.06); 
  custombarrenderer3d.setItemMargin(0.0000005); 
  
  /*chart.setBackgroundPaint(Color.WHITE);
  CategoryPlot plot = chart.getCategoryPlot();

  //CategoryAxis domainAxis = plot.getDomainAxis();
  // domainAxis.setv
  //((Object) domainAxis).setVerticalCategoryLabels(false);
  // plot.setDomainAxis(domainAxis);

  ValueAxis rangeAxis = plot.getRangeAxis();
  //设置最高的一个 Item 与图片顶端的距离
  rangeAxis.setUpperMargin(0.15);
  //设置最低的一个 Item 与图片底端的距离
  rangeAxis.setLowerMargin(0.15);
  plot.setRangeAxis(rangeAxis);

  BarRenderer3D renderer = new BarRenderer3D();
  renderer.setBaseOutlinePaint(Color.BLACK);
  //设置 Wall 的颜色
  renderer.setWallPaint(Color.gray);
  //设置每种水果代表的柱的颜色
  renderer.setSeriesPaint(0, new Color(0, 0, 255));
  renderer.setSeriesPaint(1, new Color(0, 100, 255));
  renderer.setSeriesPaint(2, Color.GREEN);
  //设置每个地区所包含的平行柱的之间距离
  renderer.setItemMargin(0.1);
  //显示每个柱的数值,并修改该数值的字体属性
  renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
  renderer.setItemLabelsVisible(true);
  plot.setRenderer(renderer);

  //设置柱的透明度
  plot.setForegroundAlpha(0.6f);
  //设置地区、销量的显示位置
  plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
  plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);*/
  
  
  //设置柱子显示值
  //renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
  //renderer.setBaseItemLabelsVisible(true);

  //BarRenderer custombarrenderer3d3d = new BarRenderer();   

  //custombarrenderer3d3d.setBaseItemLabelPaint(Color.RED);//数据字体的颜色   

  //custombarrenderer3d3d.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());   

  //custombarrenderer3d3d.setBaseItemLabelsVisible(true);   
  
  /*custombarrenderer3d.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
  custombarrenderer3d.setItemLabelFont(new Font("黑体",Font.BOLD,12));
  custombarrenderer3d.setItemLabelAnchorOffset(1);
  custombarrenderer3d.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
  custombarrenderer3d.setItemLabelsVisible(true);*/

  CategoryPlot plot = chart.getCategoryPlot();
 
  plot.setForegroundAlpha(0.6f);

  plot.setRenderer(custombarrenderer3d);

  return chart;
 }

 public void setChart(JFreeChart chart) {
  this.chart = chart;
 }


}

 

 

处理图表的action

/**
 * JFreeChartAction.java
 * com.lin.action
 * zlj
 * Jul 19, 2012   
 *
 */


package com.lin.action;

import org.jfree.chart.JFreeChart;

import com.lin.jfreecahrt.ChartService;
import com.lin.jfreecahrt.FruitService;
import com.opensymphony.xwork2.ActionSupport;

/**
 * Class JFreeChartAction
 * @author zlj
 * @version
 * @Date Jul 19, 2012 5:01:34 PM
 */

public class JFreeChartAction extends ActionSupport{
 
 private JFreeChart chart;
 @Override
 
 public String execute(){
  FruitService fs=new FruitService();
  chart=fs.getChart();
  return SUCCESS;
 }
 public JFreeChart getChart() {
  return chart;
 }
 public void setChart(JFreeChart chart) {
  this.chart = chart;
 }
}

 

struts.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <constant name="deModel" value="true"></constant>
 <constant name="struts.i18n.encoding" value="UTF-8" />
 <constant name="struts.ui.templateDir" value="template" />
 <package name="mytest" extends="struts-default,jfreechart-default">
  <action name="createXml" class="com.lin.action.CreateXmlAction">
   <result name="success">/index.jsp</result>
  </action>
  <action name="url" class="com.lin.action.UrlAction">
   <result name="success">/test.jsp</result>
   <result name="list">/test.jsp</result>
   <result name="edit">/test.jsp</result>
  </action>
  <action name="freeMaker" class="com.lin.action.HelloFreeMaker">
   <result name="success" type="freemarker">/WEB-INF/templates/test.ftl</result>
  </action>
  
  <action name="jfreechart" class="com.lin.action.JFreeChartAction">
   <result name="success" type="chart">
   
         <param name="height">600</param>  
          <param name="width">1300</param> 
   </result>
  </action>
  
 </package>
</struts>

 

jsp引用页面 chart.jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'chart.jsp' starting page</title>

 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->

  </head>
 
  <body>
    <img src="jfreechart.action" />
  </body>
</html>

自己导入相应的jar就可以了

 

 

 

 

 

 

 

分享到:
评论
1 楼 136652711 2014-01-17  
   挺不错的,解决我的乱码问题了

相关推荐

    Struts2+JFreeChart 柱状图Demo

    Struts2+JFreeChart 柱状图Demo是一个典型的Java Web应用程序,它结合了Struts2框架、JFreeChart库以及可能的数据存储系统(如MySQL或Oracle),用于动态生成柱状图表。这个Demo旨在展示如何在实际项目中集成这些...

    struts2整合 jfreechart 实现报表

    JFreeChart则是一个强大的Java图表库,可以生成多种类型的图表,如柱状图、饼图、线图等,非常适合在报表系统中展示数据。当我们需要在Struts2框架下实现报表功能时,就需要将这两者进行整合。 首先,整合Struts2和...

    Struts2整合JFreeChart 实现柱状图表

    当我们需要在Struts2应用中展示数据时,整合JFreeChart能够帮助我们生成交互式且美观的图表。 首先,让我们深入了解一下Struts2框架。Struts2基于MVC(Model-View-Controller)设计模式,它将业务逻辑、视图和控制...

    struts2与jfreechart整合

    Struts2是一个基于MVC设计模式的Web应用框架,用于构建动态、数据驱动的Java Web应用,而JFreeChart则是一个强大的图表生成库,可以生成各种类型的图表,如柱状图、饼图、线图等,广泛应用于数据分析和展示。...

    struts2整合JFreechart

    struts2整合JFreechart: jcommon-1.0.16.jar jfreechart-1.0.13.jar struts2-jfreechart-plugin-2.0.11.jar 导成图片操作说明

    java+jfreechart+struts 生成柱状图

    java+jfreechart+struts 生成柱状图 java jfreechart 柱状图 java jfreechart 柱状图 谁需要完整项目可以去http://download.csdn.net/source/2665347

    Struts2+JFreeChart+饼状图,柱状图,折线图

    在Struts2框架中集成JFreeChart库,可以方便地创建各种图表,如饼状图、柱状图和折线图,为数据分析和可视化提供便利。 JFreeChart是一个开源的Java类库,用于生成高质量的统计和财务图表。它支持多种图表类型,...

    jfreechart 堆栈柱状图跟折线图结合拼接

    jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707

    struts2+jfreechart

    Struts2和JFreeChart是两个在Java Web开发中广泛使用的开源库。Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建可维护性和可扩展性极高的Web应用程序,而JFreeChart则是一个用于生成高质量图表的...

    struts2整合jfreechart

    JFreeChart则是一个强大的Java库,用于创建各种类型的图表,如饼图、线图、柱状图等。本实例将讲解如何在Struts2框架中整合JFreeChart,以实现动态生成图表的功能。 首先,确保你已经安装了Struts2框架,并且在项目...

    struts2整合JFreeChart

    总的来说,Struts2与JFreeChart的整合是Java Web开发中常见的需求,它可以帮助我们创建交互式的、数据驱动的图表应用。通过理解JFreeChart的图表生成原理,掌握Struts2的Action和结果类型,以及熟悉Web应用的图像...

    struts2整合JfreeChart完成报表功能

    整合Struts2和JFreeChart,主要是为了在web应用中展示动态生成的数据图表,例如报表。以下是整合的步骤和关键知识点: 1. **下载和引入JFreeChart库**: 首先,你需要从JFreeChart的官方网站...

    struts2整合jfreechart例子文档

    Struts2 框架与 JFreeChart 的整合允许开发者在 Web 应用程序中创建交互式的图表,如饼图、柱状图等。JFreeChart 是一个强大的 Java 图表库,可以生成高质量的静态图表,而 Struts2 则是用于构建 MVC(模型-视图-...

    Struts2整合jfreechart

    整合Struts2和JFreeChart,可以让我们在web应用中方便地创建动态统计图表。下面将详细介绍这个整合过程以及相关的知识点。 1. **JFreeChart基础**: - JFreeChart库提供了丰富的图表类型,包括时间序列图、饼图、...

    Struts2整合JFreeChart一

    Struts2应用开发系列Struts2整合JFreeChart

    Struts2整合JFreeChart六

    Struts2应用开发系列Struts2整合JFreeChart

    Struts2整合JFreeChart四

    Struts2应用开发系列Struts2整合JFreeChart

    Struts2整合JFreeChart三

    Struts2应用开发系列Struts2整合JFreeChart

Global site tag (gtag.js) - Google Analytics