JfreeChart与Java2D介绍.doc_第1页
JfreeChart与Java2D介绍.doc_第2页
JfreeChart与Java2D介绍.doc_第3页
JfreeChart与Java2D介绍.doc_第4页
JfreeChart与Java2D介绍.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JfreeChart与Java2D介绍1、JfreeChart前言 随着internet的发展,浏览器所能展现的信息不仅是静态的或简单动态的,还能展示种类报表、图表。为了创建一个可以在web浏览器上查看的图表一般有两种做法:第一种就是使用applet利用java本身对图形的支持来显示一个图表;第二种就是直接在web服务器端生成好图表图片文件后发送给浏览器。第一种方式显然对于客户端要求太高,随着现在主流浏览器放弃对JAVA的支持后,这种方式只适合一些局域网的应用,而对于因特网的环境就显得不太适合。因此我们下面将介绍一个JAVA的图表引擎JFreeChart用来产生基于WEB的图表以及使用java自身的绘图功能生成一个web图表。1.2、JfreeChart概要JFreeChart是开放源代码站点SourceF上的一个JAVA项目,它主要用来生成各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。JfreeChart帮助文档是需要40美金去购买,但sun网站上有在线的帮助文档。JFreeChart可以直接生成PNG,JPG等各种形式的文件,为我们开发java项目增加了一部利器。1.3、JFreeChart核心的对象类1.3.1、JFreeChart中几个核心的对象类类名类的作用以及简单描述JFreeChart图表对象,任何类型的图表的最终表现形式都是该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象org.jfree.chart.ChartFactory 由它来产生 JFreeChart 对象XXXXXDataset数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类-所有数据源类都要实现的接口XXXXXPlot图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持org.jfree.chart.plot.Plot通过JFreeChart 对象获得它,然后再通过它对图形外部部分(例:坐标轴)调整XXXXXRenderer负责如何显示一个图表对象org.jfree.chart.renderer.AbstractRenderer通过JFreeChart 对象获得它,然后再通过它对图形内部部分(例:折线的类型)调整。同样,针对不同类型的报表图,它有着不同的子类实现!在下面我们简称它为 RendererXXXXXAxis用于处理图表的两个轴:纵轴和横轴XXXXXURLGenerator用于生成Web图表中每个项目的鼠标点击链接XXXXXToolTipGenerator用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类1.3.2、类的对应关系分类类型数据集接口dataset(具体实现类)图形外部设置类Plot图形内部设置类Renderer1饼图PieDataset(DefaultPieDataset)/IntervalXYDatasetPiePlot-2柱状图CatagoryDataset(DefaultCategoryDataset)CategoryPlotBarRenderer3折线图CatagoryDataset(DefaultCategoryDataset)/ XYDataset(XYSeriesCollection)XYPlot/XYPlotXYLineAndShapeRenderer/XYLineAndShapeRenderer4时间序列图XYDataset (TimeSeriesCollection)XYPlotXYLineAndShapeRenderer1.4、使用介绍 1.4.1、JfreeChart包介绍1)包中包含源码、jar包、demo演示包、CHANGELOG.txt,其中源码中包含demo演示的所有类的源代码(JfreeChart0.9.20版本以上源码不全,只能反编译),CHANGELOG.txt日志中的描述了JfreeChart相邻版本的变化(不是所有版本JfreeChart都有)。2) 安装使用时需要安装两个文件:JFreeChart以及Jcommon。目前最新配套版本是:JFreeChart 1.0.1和 Jcommon 1.0.0 ,一般后者包含在JfreeChart包中的lib文件夹中。若不好用则需要把lib中的类全部部署使用。下载安装后需要把包的路径加入到classpath中。3)包的结构见JFreeChart 1.0.0 Pre2的帮助注意:上述文档可能不全,在生成过程中有错误.Packages org.jfree 包org.jfree.chart 图表org.jfree.chart.annotations 结图表加注释的结构org.jfree.chart.annotations.junit org.jfree.chart.axis 坐标轴org.jfree.chart.axis.junit org.jfree.chart.block 印版、版面org.jfree.chart.block.junit org.jfree.chart.demo 示例org.jfree.chart.encoders 图表编码与解码org.jfree.chart.entity 图表或图表中实体的构成org.jfree.chart.entity.junit org.jfree.chart.event 事件类和监听接口org.jfree.chart.imagemap 图片类org.jfree.chart.junit org.jfree.chart.labels 提供其它类显示使用的项目标签和工具提示org.jfree.chart.labels.junit org.jfree.chart.needle 描绘罗盘外围针的范围org.jfree.chart.plot 图形外部设置类org.jfree.chart.plot.junit org.jfree.chart.renderer 图形内部设置类org.jfree.chart.renderer.category org.jfree.chart.renderer.category.junit org.jfree.chart.renderer.junit org.jfree.chart.renderer.xy org.jfree.chart.renderer.xy.junit org.jfree.chart.resources org.jfree.chart.servlet org.jfree.chart.title 图形标题org.jfree.chart.title.junit org.jfree.chart.ui 用户界面,在demo中使用。org.jfree.chart.ui.junit org.jfree.chart.urls org.jfree.chart.urls.junit org.jfree.data 数据org.jfree.data.category 分类数据集org.jfree.data.category.junit org.jfree.data.contour -ContourPlot使用的数据集org.jfree.data.function org.jfree.data.gantt 甘特图的接口和类org.jfree.data.gantt.junit org.jfree.data.general data接口和类org.jfree.data.general.junit org.jfree.data.io 提供输入输出的包org.jfree.data.jdbc 通过jdbc从数据库中取数据org.jfree.data.junit org.jfree.data.resources org.jfree.data.statistics 描述统计数据org.jfree.data.statistics.junit org.jfree.data.time 与时间有关的数据接口org.jfree.data.time.junit org.jfree.data.xml 从xml中取数据org.jfree.data.xy 数据集XYDataset的接口和相关描述org.jfree.data.xy.junit 1.4.2、利用jfreechart生成图片的过程利用jfreechart组件在服务器端生成图片的过程分为以下几步:一、 根据所画的图表类型创建数据集。比如:创建一个饼图数据集DefaultPieDatasetprivate static DefaultPieDataset getDataSet() DefaultPieDataset dataset = new DefaultPieDataset();dataset.setValue(苹果,100);dataset.setValue(梨子,200);dataset.setValue(葡萄,300);return dataset;二、 使用数据集等信息做为参数创建图表。比如创建饼图的图表。JFreeChart chart = ChartFactory.createPie3DChart(水果产量图,data, true, false,false);参数意义(图表标题,数据集,是否显示图例,是否生成工具,是否生成URL链接)这里可以设置生成的图片的样式,包括图片的内外部样式。三、在服务器端生成图片ChartUtilities.saveChartAsJPEG(new File(d:test.jpe),100,JfreeChart对象,width,heigth);参数据的意义(生成的图片保存的目录及名称,质量因数,JfreeChart对象,图片宽度,图片高度);1.5、JfreeChart 帮助最新下载:/jfreechart/index.php历史版本下载/jfreechart/jfreechart-1.0.0-pre2.zip?use_mirror=jaist版本介绍:/jfreechart/history.php论谈网址:/phpBB2/在线帮助文档最新帮助文档/jfreechart/api/jfreechart-0.9.11.tw/apidoc/jfreechart-0.9.11/index.htmlJFreeChart 0.9.21 /jfree/doc/2、java绘图2.1、概述jfreechart主要用于生成各类已知图表,对于一些特殊图表的生成或对图像进行处理(效果制做)就显的力不从心。下面介绍一下java 2D.2.1、java2D APIJava 2D API 类分为以下几个包: java.awt java.awt.geom 中包含与几何元素定义有关的类和接口 java.awt.font 中包含用于文本布局和字体定义的类和接口 java.awt.color 中包含用于颜色空间定义和颜色监视的类和接口 java.awt.image 包中包含用于图像定义和绘制的类和接口 java.awt.image.renderable 包中包含用于图像定义和绘制的类和接口 java.awt.print 中包含用于打印所有基于 Java 2D 的文本、图形和图像的类和接口注意:1、包 java.awt 中包含一般的或比原有类增强的 Java 2D API 类和接口(显然,并非所有 java.awt 中的类都是 Java 2D 类)。2、在绘图中会使用一个不属于 Java 平台的 API:com.sun.image.codec.jpeg提供编码或解码 JPEG(Joint Photographic Expert Group,联合图像专家组)图像的类。3、com.sun.image.codec.jpeg包位于JDK目录的rt.jar包中,尽管这些接口可能作为 Sun 的 JDK(Java Development Kit,Java 开发工具包)和 JRE(Java Runtime Environment,Java 运行时环境)的一部分予以分发,但它不是公开的API,需要将rt.jar复制到web应用程序的WEB-INF/lib下。2.2、java2D应用2.2.1、用Graphics2D绘制Graphics2D 扩展了 java.awt.Graphics,以便对形状、文本和图像的展示提供更加完善的控制。Java 2D 绘制进程是通过 Graphics2D 对象及其状态属性来控制的。 在绘制图形对象时,Graphics2D 状态属性(如线条样式和变换)将应用于图形对象。与 Graphics2D 有关的状态属性集被称为 Graphics2D 上下文。要绘制文本、形状或图像,请设置 Graphics2D 上下文,然后调用一种 Graphics2D 绘制方法(例如 draw 或 fill)即可。2.2.2、设置 Graphics2D 上下文 要配置 Graphics2D 上下文以进行绘制,应使用 Graphics2D set 方法来指定属性,例如 RenderingHints、Stroke、Paint、剪切路径、Composite 和 Transform。设置绘制建议RenderingHints 对象封装了与绘制对象有关的所有参数。要设置 Graphics2D 上下文中的绘制建议,请创建 RenderingHints 对象并将它传递给 Graphics2D.setRenderingHints。或者可以直接set。设置 Stroke 宽度BasicStroke 定义了应用于 Shape 轮廓的特性,包括其宽度和短划线图案、线段连接方式及线条末端所用的装饰(如果有)。要设置 Graphics2D 上下文中的 stroke 属性,请创建 BasicStroke 对象并将它传给 setStroke。要设置 stroke 宽度,请创建一个具有适当宽度的 BasicStroke 对象,然后调用 setStroke。下例中,我们将 stroke 宽度设置成 12 磅,而对连接和笔形修饰则使用缺省值:wideStroke = new BasicStroke(12.0f);g2.setStroke(wideStroke);指定连接和笔形样式要设置连接和笔形样式,请创建一个具有相应属性的 BasicStroke 对象。下例中,我们将 stroke 宽度设置成 12 磅,同时使用圆角连接和笔形样式(而不用缺省值):roundStroke = new BasicStroke(4.0f, BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);g2.setStroke(roundStroke);使用渐变填充形状GradientPaint 类提供了使用一种颜色到另一种颜色的渐变填充形状的方法。在创建 GradientPaint 时,可指定开始位置和颜色及结束位置和颜色。填充颜色将沿着两个位置之间的直线成比例地从一种颜色变为另一种颜色2.2.3、Graphics2D编码输出Graphics2D输出到httprespose对BufferedImage进行JPEG编码JPEGImageEncoder jpegimageencoder = JPEGCodec.createJPEGEncoder(servletoutputstream);jpegimageencoder.encode(bufferedimage);编码后的JPEG图像直接输出到了out对象中,我们只要传入response. getOutputStream()就可以直接输出到HttpResponse中。servletoutputstream.close();Graphics2D输出到.jpg文件中OutputStream outPutStream = new FileOutputStream(D:tomcatwebappsjfreecha

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论