var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-20738293-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script')"/>
jutleo
欢迎走进有风的地方~~
posts - 63,  comments - 279,  trackbacks - 0
        说完iReport+jasperReport之scriptlet 下来就得看看图表了,jasperReport的图表完全借助于外部的绘图工具,charts和JFreeChart,其中JFreeChart是目前java最火的一个绘图工具了,还是引用JFreeChart简单使用 来实现我们的图表吧,说到这里澄清一下,本篇写的是jasperReport的图表,下来会专门写一篇关于jasperReport图片报表。
        jasperReport不重复发明车轮,在报表中是以一个变量的方式引入外部图表的,下来我们看看是怎么实现
的,新建一变量jfreeChart 如图:

        紧接着我们在报表上放置一图片控件,下来一篇我会详细说说图片问题,右击设置图片控件属性,如图所示:

net.sf.jasperreports.engine.JRRenderable为jasperReport一个专门用来处理图表问题公共接口,一切OK,现在就是这个变量怎么才能吧jfreechart传递到报表中呢,还记得上篇的scriptlet吗?
新建一JChartReportDemo.java类,继承自JRDefaultScriptlet,当然要实现那些方法不过大部分我们都是空实现而已,我们只要在afterReportInit方法内绘制图表然后在set进去我们定义的那个变量即可:
public void afterReportInit() throws JRScriptletException {
        
        
//create pie chart dataset
        DefaultPieDataset dateset = new DefaultPieDataset();

        
//set dataset value
        dateset.setValue("Chinese"108);
        dateset.setValue(
"Math"110);
        dateset.setValue(
"English"74);
        dateset.setValue(
"Science Department"226);
        
        
/*
         * create jfreeChart object
         * the first parameter is pie chart title
         * the secend parameter is dataset of pie chart
         * the three parameter is boolean value,create chart note
         * the four parameter is boolean value,it's a tooltip of move mouse on
         * configure chart to generate URLs,It's get a PiePlot3D object
         * 
         
*/

        JFreeChart freeChart 
= ChartFactory.createPieChart3D("Report Pie Chart", dateset, truetruefalse);
        
        PiePlot3D plot3D 
= (PiePlot3D) freeChart.getPlot();
        plot3D.setNoDataMessage(
"No data to display");
        
        
// set variable "jfreeChart" value
        this.setVariableValue("jfreeChart"new JFreeChartRenderer(freeChart));
    }
其中plot3D.setNoDataMessage("No data to display");这一句的意思是当没有显示出图表或是图表没有数据不显示时会显示我们定义的这些信息。
this.setVariableValue("jfreeChart"new JFreeChartRenderer(freeChart));
这一句当然是set数据了,JFreeChartRenderer这个类是JRRenderable接口的间接实现,从API上看jasperReport已不推荐我们使用了。
    OK,我们test一下吧!JChartReportMain.java
package org.bulktree.ireport.chart;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.view.JasperViewer;

/**
 * 
@author bulktree Email: laoshulin@gmail.com
 * @date Nov 28, 2008
 
*/

public class JChartReportMain {
    
public static void main(String[] args) {
        String path 
= "D:/workspace/JFreeChartReportDemo.jrxml";

        File file 
= new File(path);
        InputStream in;
        
try {
            HashMap parameters 
= new HashMap();
            parameters.put(
"ReportTitle""LAOSHULIN");
            in 
= new FileInputStream(file);
            JasperReport jasperReport 
= JasperCompileManager.compileReport(in);
            JasperPrint jasperPrint 
= JasperFillManager.fillReport(jasperReport,
                    parameters, 
new JREmptyDataSource());
            JasperViewer viewer 
= new JasperViewer(jasperPrint);
            viewer.setVisible(
true);
        }
 catch (Exception e) {
            e.printStackTrace();
        }

    }

}

看过前面几篇应该对这个相当熟悉了吧!
posted on 2008-12-19 10:04 凌晨风 阅读(8966) 评论(16)  编辑  收藏 所属分类: iReport + JasperReport 系列

FeedBack:
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-03-16 13:32 | shuaijie

你好,看到你的文章,故想要一份你的JasperReport(HTML格式的图表)的代码,麻烦您了,谢谢。  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-03-16 13:32 | shuaijie
我的邮箱是:shuaijie.zhi@gmail.com,谢谢你了。  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-03-19 11:23 | 凌晨风
不好意思,没有例子代码有问题大家可以交流啊  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-03-26 20:06 | wwm
为什么我生成的报表再WEB中图片显示不出来呢  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)[未登录]
2009-03-27 08:45 | 西西
你好,想交流一下传参数到图表的问题,QQ:48322221  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-03-27 09:17 | 凌晨风
传递参数和普通的参数传递是一样的  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-04-01 16:08 | zhangb310
你好:
我用的是ireport 工具生成报表, ireport怎么样和jfreechart结合使用,
还有我在ireport中java程序怎么用啊?
  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-04-01 16:10 | zhangb310
新手
求教ireport的深入问题.
msn:zhangb310@hotmail.com
  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-04-01 16:17 | 凌晨风
@zhangb310
scriptlet
  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)[未登录]
2009-04-16 17:29 | 1
我做出来的图表,Html页面图片为什么无法刷新?  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-06-22 11:29 | ps
@shuaijie

你自己写啦。。要别人的代码!!
  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-07-22 16:49 | XX某
Html不出图片
怎么解决哦!
QQ:3039410790  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-11-09 11:49 | tt
JChartReportDemo.java这个类你是怎么注册进去的呢?  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2009-11-23 17:28 | tgm
能给出html形式的jfreechart不?  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)
2012-05-09 00:37 |
求web中与struts2结合使用的,我的邮箱是yuchensuifeng@hotmail.com,谢谢  回复  更多评论
  
# re: iReport+jasperReport之JFreeChart(图表报表)[未登录]
2012-10-18 17:35 | sky
你好!
我用的是ireport 工具生成报表, ireport怎么样和jfreechart结合使用,
还有我在ireport中java程序怎么用啊?
怎样ireport生产线图或柱状图的横纵坐标轴刻度大小?求解决。
我qq:425023633 邮箱:skytoxiao@163.com  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用链接

留言簿(11)

我参与的团队

随笔分类

随笔档案

文章分类

文章档案

新闻分类

新闻档案

收藏夹

围脖

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜