




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、JFreeChart获取。 JFreeChart是JFreeChart公司在开源网站SourceF上的一个项目,该公司的主要产品有如下: 1、JFreeReport:报表解决工具 2、JFreeChart:Java图形解决方案(Application/Applet/Servlet/Jsp) 3、JCommon:JFreeReport和JFreeChart的公共类库 4、JFreeDesigner:JFreeReport的报表设计工具 我们可以从jfree官方网站上获取最新版本(最新的版本是1.0.5)和相关资料(但是jfree的Developer Guides是需要花美金才能获取), 获取地址:/jfreechart/index.html(同时可以获得简明介绍) 我们以当前版本:jfreechart-1.0.0-rc3.tar.gz为例子进行说明二、JFreeChart配置安装 1、解压jfreechart_0.9.21.zip到指定位置,其中source是jfreechart的源码,jfreechart-0.9.21-demo.jar 是例子程序(该部分留给大家自己去研究) 2、为了配置成功,我们需要关注的文件有如下三个:jfreechart-0.9.21.jar、libjcommon-0.9.6.jar、 libgnujaxp.jar 3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%LIB中,同时在环境变量CLASSPATH中加入二、JFreeChart配置安装 1、解压jfreechart_0.9.21.zip到指定位置,其中source是jfreechart的源码,jfreechart-0.9.21-demo.jar 是例子程序(该部分留给大家自己去研究) 2、为了配置成功,我们需要关注的文件有如下三个:jfreechart-0.9.21.jar、libjcommon-0.9.6.jar、 libgnujaxp.jar 3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%LIB中,同时在环境变量CLASSPATH中加入 如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明: 把上述三个文件拷贝到TESTWEB-INFLIB中,然后修改TESTWEB-INFweb.xml文件,在其中加入如下代码: DisplayChart org.jfree.chart.servlet.DisplayChart DisplayChart /servlet/DisplayChart 至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。这里值得提出的是jfreechart的类 结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。如果 是中文显示的时候可能依据观感需要改变源码的字体,不过我个人觉得这个版本比以前版本要好一些。三、JFreeChart功能介绍 JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面: pie charts (2D and 3D):饼图(平面和立体) bar charts (regular and stacked, with an optional 3D effect):柱状图 line and area charts:曲线图 scatter plots and bubble charts time series, high/low/open/close charts and candle stick charts:时序图 combination charts:复合图 Pareto charts Gantt charts:甘特图 wind plots, meter charts and symbol charts wafer map charts (态图表,饼图(二维和三维) , 柱状图 (水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混和图, 温度计图, 刻度图等常用商用图表) 图形可以导出成PNG和JPEG格式,同时还可以与PDF和EXCEL关联 JFreeChart核心类库介绍: 研究jfreechart源码发现源码的主要由两个大的包组成:org.jfree.chart,org.jfree.data。其中前者主要与图形 本身有关,后者与图形显示的数据有关。具体研究如果大家有兴趣的话可以自己研究,以后有时间我会告诉大家怎么去研究源码。 核心类主要有: org.jfree.chart.JFreeChart:图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象 org.jfree.data.category.XXXDataSet:数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类 org.jfree.chart.plot.XXXPlot:图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持 org.jfree.chart.axis.XXXAxis:用于处理图表的两个轴:纵轴和横轴 org.jfree.chart.render.XXXRender:负责如何显示一个图表对象 org.jfree.chart.urls.XXXURLGenerator:用于生成Web图表中每个项目的鼠标点击链接 XXXXXToolTipGenerator:用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类 四、JFreeChart开发(Application/Applet)one: pie charts/* JfreeChartTest.java* author:longlong* May 31, 2007*/package com.ghg.java;import org.jfree.data.general.DefaultPieDataset;import org.jfree.chart.*;public class JfreeChartTest public static void main(String args) /创建饼图数据对象 DefaultPieDataset dfp=new DefaultPieDataset(); dfp.setValue(管理人员, 25); dfp.setValue(市场人员, 35); dfp.setValue(开发人员, 20); dfp.setValue(后勤人员, 5); dfp.setValue(财务人员, 15); /Create JFreeChart object JFreeChart a =ChartFactory.createPieChart(CityInfoPort公司组织架构图,dfp, true, true, true); ChartFrame frame=new ChartFrame (CityInfoPort公司组织架构图 ,a,true); frame.pack(); frame.setVisible(true);Refactor one/* JfreeChartOne.java* author:longlong* May 31, 2007*/package com.ghg.java;import java.awt.Font;import javax.swing.JPanel;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartPanel;import org.jfree.chart.JFreeChart;import org.jfree.chart.plot.PiePlot;import org.jfree.chart.plot.PlotOrientation;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset;import org.jfree.data.general.DefaultPieDataset;import org.jfree.data.general.PieDataset;import org.jfree.ui.ApplicationFrame;public class JfreeChartOne extends ApplicationFrame private static final long serialVersionUID = 1L; public JfreeChartOne(String s) super(s); setContentPane(createJPanel(); public static void main(String args) JfreeChartOne one=new JfreeChartOne(CityInfoPort公司组织架构图); one.pack(); one.setVisible(true); /利用静态方法设定数据源(饼状图) public static PieDataset createPieDataset() DefaultPieDataset defaultpiedataset = new DefaultPieDataset(); defaultpiedataset.setValue(管理人员, 10.02D); defaultpiedataset.setValue(市场人员, 20.23D); defaultpiedataset.setValue(开发人员, 60.02D); defaultpiedataset.setValue(OEM人员, 10.02D); defaultpiedataset.setValue(其他人员, 5.11D); return defaultpiedataset; / 通过ChartFactory创建JFreeChart的实例 public static JFreeChart createJFreeChart(PieDataset p) JFreeChart a =ChartFactory.createPieChart(CityInfoPort公司组织架构图,p, true, true, true); PiePlot pie=(PiePlot )a.getPlot(); pie.setLabelFont(new Font(SansSerif,Font.BOLD,12); pie.setNoDataMessage(No data available); pie.setCircular(true); pie.setLabelGap(0.01D);/间距 return a; public static JPanel createJPanel () JFreeChart jfreechart = createJFreeChart(createPieDataset(); return new ChartPanel(jfreechart); 效果如图所示:two:创建类别图/* JfreeChartTest.java* author:longlong* May 31, 2007*/package com.ghg.java;import org.jfree.data.category.DefaultCategoryDataset;import org.jfree.data.general.DefaultPieDataset;import org.jfree.chart.*;import org.jfree.chart.plot.PlotOrientation;public class JfreeChartTest public static void main(String args) / 创建类别图(Category)数据对象 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, 北京, 苹果); dataset.addValue(100, 上海, 苹果); dataset.addValue(100, 广州, 苹果); dataset.addValue(200, 北京, 梨子); dataset.addValue(200, 上海, 梨子); dataset.addValue(200, 广州, 梨子); dataset.addValue(300, 北京, 葡萄); dataset.addValue(300, 上海, 葡萄); dataset.addValue(300, 广州, 葡萄); dataset.addValue(400, 北京, 香蕉); dataset.addValue(400, 上海, 香蕉); dataset.addValue(400, 广州, 香蕉); dataset.addValue(500, 北京, 荔枝); dataset.addValue(500, 上海, 荔枝); dataset.addValue(500, 广州, 荔枝); JFreeChart chart=ChartFactory.createBarChart3D(水果产量图, 水果, 水果, dataset, PlotOrientation.VERTICAL, true, true, true); ChartFrame frame=new ChartFrame (水果产量图 ,chart,true); frame.pack(); frame.setVisible(true); 按照one的重构办法也可以对这个程序实现重构。 当前位置:主页技术资讯JSP编程文章内容jFreeChart初探-JSP教程,资料/其他来源: 作者: 发布时间:2007-12-27/*/* author:rautinee */* email: */* */*本文可自由传播使用,但请务必保留此信息 */*jfreechart也许对大家来说很陌生,她是一款免费的、功能强大的统计图生成工具,能够直接生成png,jpg等各式的文档为我们java项目的研发增加了一部利器。她的英文简介jfreechart is a free java class library for generating charts, including:pie charts;line charts and horizontal/vertical bar charts (regular and stacked, with optional 3d-effect);xy plots and scatter plots;time series, high/low/open/close charts and candle stick charts;combination charts;pareto charts;gantt charts;bubble charts;wind plots, meter charts and symbol charts;正好我最近的一个项目用到她,于是就很粗略的看了一下,现在把他拿出来和大家分享,希望对大家的工作有所帮助。本文主要是讲解她在jsp上面的应用。例子采用jsp+javabean结构实现准备工作:首先我们需要什么?当然是jfreechart的package了,能够在她的官方网站上面找到下载链接/jfreechart/,把包下下来,配置到tomcat当中,然后能够开始我们的jfreechart之旅了。下面我要做的是个饼状统计图,首先建立javabean文档文档名:tryitshow.javapackage com.tryit;import java.io.*;import java.awt.insets;import java.awt.font;import java.io.printwriter;import java.text.simpledateformat;import java.util.iterator;import java.util.locale;import java.text.numberformat;import javax.servlet.http.httpsession;import org.jfree.data.*;import org.jfree.chart.*;import org.jfree.chart.axis.*;import org.jfree.chart.renderer.verticalbarrenderer;import org.jfree.chart.renderer.standardxyitemrenderer;import org.jfree.chart.plot.*;import org.jfree.chart.entity.*;import org.jfree.chart.tooltips.*;import org.jfree.chart.urls.*;import org.jfree.chart.servlet.*;import org.jfree.chart.texttitle;import .url;public class tryitshow public static string generatepiechart(string infostr, string titles,httpsession session, printwriter pw) string filename = null; font font; try / 建立piedataset defaultpiedataset data = new defaultpiedataset(); string ss=infostr.split(,); for (int n=0;nss.length;n+) string sspart=ssn.split(#); int tt=integer.parseint(sspart1); string mm=sspart0; data.setvalue(mm,tt); / 生成chart物件 pieplot plot = new pieplot(data); plot.setinsets(new insets(0, 5, 5, 5); plot.settooltipgenerator(new standardpietooltipgenerator(); font=new font(黑体,font.center_baseline,20);/这个地方是配置统计图标题的字体和大小 jfreechart chart = new jfreechart(,jfreechart.default_title_font, plot, true); texttitle tt=new texttitle(titles); tt.setfont(font); chart.setbackgroundpaint(java.awt.color.white);/统计图片的底色 chart.settitle(tt); / 把生成的文档写入到临时的目录中 chartrenderinginfo info = new chartrenderinginfo(new standardentitycollection(); filename = servletutilities.savechartaspng(chart, 500, 300, info, session);/选择存储成png格式的文档,当然您也能够使用savechartasjpeg的方法生成jpg图片 / 把image map 写入到 printwriter chartutilities.writeimagemap(pw, filename, info); pw.flush(); catch (exception ex) system.out.println(error:+ex.getmessage(); return filename; 接着是jsp文档 new document img src= width=500 height=300 border=0 usemap=#ok,大功告成,当然,您能够采用其他方式,比如您能够把dataset的数据配置在xml文档中,从xml文档读取统计数据中添加百分比等等,还能够选择生成柱状图、折线图等。jfreechart更有很多其他的用法,希望大家能够多多交流。web.xml文档的配置 displaychart org.jfree.chart.servlet.displaychart displaychart /servlet/displaychart import java.awt.Insets;import java.awt.Image;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;import java.util.ArrayList;import java.util.Iterator;import java.util.Locale;import java.text.NumberFormat;import javax.servlet.http.HttpSession;import org.jfree.data.*;import org.jfree.chart.*;import org.jfree.chart.axis.*;import org.jfree.chart.renderer.VerticalBarRenderer;import org.jfree.chart.renderer.StandardXYItemRenderer;import org.jfree.chart.plot.*;import org.jfree.chart.entity.*;import org.jfree.chart.tooltips.*;import org.jfree.chart.urls.*;import org.jfree.chart.servlet.*;import java.awt.Font;/* Title: * Description: * Copyright: Copyright (c) 2003* Company: * author jagie* version 1.0*/public class GSPieChart public static void main(String args) Long testData = new Long(10), new Long(20), new Long(30), new Long(40); generatePieChart(testData, , null, new PrintWriter(System.out), 580, 250); /* * 生成图像文件 * param datas Long数组 * param targetUrl 点饼形图上的扇形,定向到的url * param session httpsession * param pw PrintWriter * param w 生成的图的宽度 * param h 生成的图的高度 * return 生成的图像文件的路径 */ public static String generatePieChart(Long datas, String targetUrl, HttpSession session, PrintWriter pw, int w, int h) String filename = null; try DefaultPieDataset data = new DefaultPieDataset(); data.setValue(正常纳税人, datas0); data.setValue(异常纳税人, datas1); data.setValue(数据不全纳税人, datas2); data.setValue(未处理纳税人, datas3); / Create the chart object Pie3DPlot plot = new Pie3DPlot(data); plot.setInsets(new Insets(0, 5, 5, 5); plot.setForegroundAlpha(0.6f); plot.setSectionLabelType(plot.NO_LABELS); plot.setURLGenerator(new StandardPieURLGenerator(targetUrl, type); plot.setToolTipGenerator(new StandardPieToolTipGenerator(); JFreeChart chart = new JFreeChart(数据处理结果统计图, JFreeChart.DEFAULT_TITLE_FONT, plot, true); chart.setTitle(new TextTitle(数据处理结果统计图, new Font(黑体, Font.BOLD, 15); StandardLegend sl = (StandardLegend) chart.getLegend(); sl.setItemFont(new Font(黑体, Font.TRUETYPE_FONT, 12); chart.setBackgroundPaint(new java.awt.Color(254, 254, 141); /因为jfreechart把生成的png文件保存在系统的临时文件夹中,你需要在适当的 /时候调用session.removeAttribute(JFreeChart_Deleter),这样可以保证png文 /件被删除掉 ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection(); filename = ServletUtilities.saveChartAsPNG(chart, w, h, info, session); / Write the image map to the PrintWriter ChartUtilities.writeImageMap(pw, filename, info); pw.flush(); catch (Exception e) System.out.println(Exception - + e.toString(); e.printStackTrace(System.out); filename = public_error_500x300.png; return filename; .java代码.JFreeChart Hacking来自于/JFreeChart 是什么?我就不再重复介绍了,网上文章大把.官方主页:/jfreechart/index.html那么为什么要Hacking JFreeChart呢?罪状一:中文Label显示模糊;罪状二:无简体中文LocalizationBperties文件;罪状三:向下兼容性不好,官方说jdk1.2+,其实是jdk1.4+; 兼容问题A:另存菜单输出PNG文件只能运行于jdk1.4+; 兼容问题B:另存菜单不能输出JPEG格式图片; 兼容问题C:jdk1.3-环境下中文ToolTips不能正常显示;如果一定要加一条罪状的话:目前开源免费的chart项目无出其右;十分感谢JFreeChart开发者的辛苦努力!虽然它现在还不完美。Ok,下面为Hacking做一些准备工作.1.下载jfreechart-1.0.0-pre2.zip解压;2.将解压目录source下的源码加入任意project并配置jdk&lib;3.安装一个有批量文件查询/替换功能的工具,比如UtralEdit;Hacking Begin1.解决中文Label显示模糊问题 原因分析:JFreeChart默认字体对中文的支持不完善; 解决步骤:搜索解压目录source下含有new Font(的文件; 发现JFreeChart默认字体为 foo Serif Dialog SansSerif Bitstream Vera Sans 批量替换他们为任意中文字体(推荐黑体); 当然你也可以把字体写入properties文件, 但这里介绍的是最简单的方法; 然后重新编译你修改过的文件,Ok,搞定!2.无简体中文LocalizationBperties文件 orgjfreechartLocalizationBperties 主要用来显示右键功能菜单的文字,下面我们来汉化: 注意:LocalizationBperties的编码不是Unicode, 简体中文要用GBK编码。 获得GBK编码的方法是:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- LED户外屏施工方案
- 劳务分包合同年度分包
- 现代服务业运营与管理案例分析题集
- 路面铺装施工方案
- 工程木工承包合同
- 水生植物的施工方案
- 露天煤矿施工方案
- TCSHB 0023-2024 中型可编程控制柜设计规范
- 导流明渠开挖专项施工方案
- 地暖排管现场施工方案
- 跨国合作在医药研发中的应用与挑战
- 2025年皖北卫生职业学院单招职业技能测试题库审定版
- 膀胱灌注课件
- 2025年足疗店劳务用工合同模板
- 北京版五年级下册数学计算题专项练习1000道带答案
- 2025年黑龙江交通职业技术学院单招职业技能测试题库必考题
- 2024年02月山东2024齐鲁银行德州分行社会招考笔试历年参考题库附带答案详解
- 《新中国史》课程教学大纲
- 2025年划船健身器项目投资可行性研究分析报告
- 南京市江宁区2023-2024六年级数学下册第一二单元练习及答案
- 2025-2030年中国化工园区行业发展现状及投资前景分析报告
评论
0/150
提交评论