`
crabbydonkey
  • 浏览: 6571 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Using JFreeChart in JSF

阅读更多
關于JFreeChart的介紹和JFreeChart的研究在網上到處都是,但是我發現沒有在JSF項目中使用的,今天我來說說我在JSF項目中如何動態創建JFreeChart的吧

第一步:
創建JFreeChart 中的BarChart和Linechart:兩個類與之對應并使用它們其中的init方法來創建,具體如何創建兩個chart代碼我就不寫了.

第二步:
第一步中創建了兩個類:BarChart和LineChart,并讓它們提供了兩個構建chart的靜態方法initBarChart和initLineChart.
接著通過使用JBoss的a4j:mediaOutput組件來在頁面上呈現所生成的圖片,并使用JFreeChart提供的ChartUtilities.writeImageMap()和ChartUtilities.getImageMap()生成并獲取到與生成的圖片對應的map,這樣就達到了在圖片上點選節點的時候顯示你所設定好的詳細信息了

backingbean和jsp的代碼如下:


JSF backingbean

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.faces.event.ActionEvent;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.entity.StandardEntityCollection;

public class JFreeChartBean {

	private JFreeChart chart;
	
	private String mapCode;
	
	private ByteArrayOutputStream outputStream;

	public JFreeChartBean() {
		
	}

	public void selectBarChart(ActionEvent e) {
		chart = BarChart.initBarChart();
	}

	public void selectLineChart(ActionEvent e) {
		chart = LineChart.initLineChart();
	}
         //a4j:mediaOutput組件創建圖片的方法
	public void paint(OutputStream out, Object object) throws IOException {
		try {
			byte[] b = outputStream.toByteArray();
			out.write(b);
			out.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public JFreeChart getChart() {
		if (chart == null) {
			chart = BarChart.initBarChart();
		}
		return chart;
	}

	public void setChart(JFreeChart chart) {
		this.chart = chart;
	}
	//獲取到與生成的圖片對應的map
	public String getMapCode() {
		PrintWriter pw = null;
		try {
			ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
			outputStream = new ByteArrayOutputStream();
			ChartUtilities.writeChartAsPNG(outputStream,getChart(),500,300, info);
			pw = new PrintWriter(outputStream);
			ChartUtilities.writeImageMap(pw, "imgMap", info, false);
			mapCode = ChartUtilities.getImageMap("imgMap", info);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return mapCode;
	}

	
	public void setMapCode(String mapCode) {
		this.mapCode = mapCode;
	}
    


chart.jsp

    
<h:form id="jFreeChartForm">
		<t:panelGrid columns="2">
		<a4j:commandButton value="BarChart" immediate="true" actionListener="#{jFreeChartBean.selectBarChart}" reRender="outMap,chart,jFreeChartForm"/>
		<a4j:commandButton value="LineChart" immediate="true" actionListener="#{jFreeChartBean.selectLineChart}" reRender="outMap,chart,jFreeChartForm"/>
		</t:panelGrid>
		<a4j:mediaOutput id="chart"  element="img"  cacheable="false"  session="false" ismap="true" usemap="#imgMap"
			createContent="#{jFreeChartBean.paint}" mimeType="image/jpeg"/>
		<t:outputText id="outMap" escape="false" value="#{jFreeChartBean2.mapCode}"></t:outputText> 
	</h:form>



ps:上面的代碼沒有配置額外的servlet



例圖:

 

 

 

分享到:
评论
6 楼 tangquanbin 2011-01-27  
源码能发我一份吗?quanbin.tang@foxmail.com
谢谢啦
5 楼 成溪先生 2010-01-04  
源码能发我一份吗?legendof01@gmail.com 谢谢啦
4 楼 longzhe746 2009-09-04  
你好楼主 能给我发全部的源代码吗 ? RCheol.Hong@gmail.com
谢谢!!
3 楼 j2eesun 2008-12-29  
你好,有Using JFreeChart in JSF的源代码,是否能发一份给我,谢谢!
j2eesun@163.com
2 楼 lfx2002 2008-05-18  
问题解决了
第二个参数可以为null
我之前有个抛空的错误 我以为是这个不能为空
结果是 private ByteArrayOutputStream outputStream; 为空了
原因是backingbean 的范围要是session 才能得到outputStream
1 楼 lfx2002 2008-05-18  
createContent="#{jFreeChartBean.paint}"
这个属性好象要传两个对象
一个是outputStream
一个是实现了Serializable的对象
我运行你的例子的时候第二对象为空,我看文档上是要用<a4j:mediaOutput >标签的value属性指定
请求解答
谢谢

相关推荐

    jfreechart-1.5.2.jar,jfreechart|jfreechart

    jfreechart-1.5.2.jar,jfreechart|jfreechart

    Jfreechart

    JFreeChart 是一个流行的 Java 库,用于创建各种类型的图表,包括饼图、折线图、柱状图等。在使用 JFreeChart 进行数据可视化时,可能会遇到乱码的问题,这通常与字体设置不当有关。本文将详细分析 Jfreechart 乱码...

    jfreechart,jfreechart-1.0.13,jfreechart-1.0.13,jfreechart

    《JFreeChart:Java 图形绘制的利器》 在Java编程世界中,高效且美观的图形展示是数据可视化的重要组成部分。JFreeChart作为一款强大的开源图表库,为开发者提供了丰富的图表类型和高度自定义的能力,使得Java应用...

    JFreeChart 官方例子 JFReeChart Dome

    "JFreeChart 官方例子 JFreeChart Dome" 提供了一系列官方示例,帮助开发者更好地理解和运用JFreeChart库的各种功能。 "ChangeLog" 文件通常记录了软件的更新历史,其中包括了每次版本升级中添加的新特性、修复的...

    JFreeChart开发JAR包套装

    这个“JFreeChart 开发 JAR 包套装”是针对 Java 开发者的一个重要工具集,它包含了构建具有丰富图形界面的 JSF(JavaServer Faces)应用程序所需的所有关键组件。 **JFreeChart 功能详解** 1. **多类型图表**:...

    jfreechart demo

    **JFreeChart 演示程序详解** JFreeChart 是一个强大的 Java 图表库,它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图、甘特图等,适用于各种数据可视化需求。这篇内容将深入探讨 JFreeChart 的基本使用...

    jfreechart

    标题 "jfreechart" 指的是 JFreeChart,这是一个流行的开源 Java 图形库,用于创建高质量的图表。它在各种应用中广泛使用,包括报表、仪表盘、科学出版物等,提供了丰富的图表类型,如饼图、柱状图、线图、散点图和...

    JFreechart教程与实例

    "JFreechart教程与实例" JFreechart是一款功能强大的图形报表组件,主要用于生成各种动态图表。在Java项目的应用中,JFreechart组件几乎可以满足目前图形报表的所有需求。JFreechart组件可以生成各种各样的图形报表...

    jfreechart绘制的风速风向玫瑰图

    jfreechart绘制的风速风向玫瑰图 jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart...

    jfreechart所需jar包.zip

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D图表,包括折线图、柱状图、饼图、散点图等。在Java应用程序中,JFreeChart经常被用于数据分析和可视化,尤其在报表系统、数据分析工具或者任何需要...

    JFreeChart混合图表演示

    JFreeChart是一款强大的Java库,用于创建各种类型的图表,包括柱状图、饼图、线图、散点图等。在“JFreeChart混合图表演示”中,我们重点探讨如何利用JFreeChart来创建一个包含多种图表类型的混合图表,以提供更丰富...

    jfreechart依赖jar包

    JFreeChart 是一个强大的 Java 图形库,它为开发者提供了丰富的图表类型,包括柱状图、折线图、饼状图等,用于在 Java 应用程序中进行数据可视化。在 Java 后台开发中,数据的图形化表示能够帮助用户更直观地理解...

    jfreechart使用的3个jar包

    **JFreeChart 使用详解** JFreeChart 是一个用于 Java 的开源图表库,它提供了一种简单的方法来创建各种复杂的图表,如折线图、柱状图、饼图、散点图以及更专业的图表类型,如甘特图和雷达图。在Java应用中,如果你...

    JFreeChart

    **JFreeChart** 是一个广泛使用的Java库,用于创建高质量的图表,包括折线图、柱状图、饼图、散点图等。它在Java应用程序、Web应用、报告和移动应用中都有广泛应用。JFreeChart支持多种图表类型,允许自定义颜色、...

    jfreechart中文学习文档

    ### jfreechart中文学习文档 #### 一、引言 ##### 1.1 JFreeChart 是什么? **1.1.1 概览** JFreeChart 是一款为 Java 平台设计的免费图表库。这款工具非常适合在各种 Java 应用程序、Applet 和 Servlet 中使用...

    JFreeChart-1.0.9.zip jfreechart.jar

    **JFreeChart 1.0.9:一个强大的Java图表库** JFreeChart是一个流行的开源Java库,用于创建各种高质量的图表,包括折线图、柱状图、饼图、散点图、甘特图等。它在描述复杂数据集时提供了一种直观的方式,广泛应用于...

    代替jfreechart的FusionCharts

    FusionCharts是一款强大的数据可视化工具,它可以作为Java图表库jFreeChart的一个替代选择。与jFreeChart相比,FusionCharts提供了更加丰富的图表类型、更美观的图表效果以及更友好的用户体验。本文将深入探讨...

Global site tag (gtag.js) - Google Analytics