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

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就可以了

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值