jfreechart 的java对象关系简释

chart|java对象

 jfreechart 的java对象关系简释

博客中国分类:java技术, 

jfreechart是一个优秀的开源JAVA 2D项目,缺点是缺乏文档,中英文都是如此。本文是经验总结的第二部分

二、jfreechart作图类对象的协调关系

jfreechart 的绘图对象由一个org.jfree.chart.JFreeChart组成,但作为绘图关键的Graphich2d通过 org.jfree.chart.render.*中的对应render类包装后设入,换言之,开发者可以通过对基础图板Graphic的设置,完成必要的绘图预定效果设计;而大多数的修改,实际上可以通过包装的各个类操作而不用直接修改Graphic对象属性(谁记得呢?)。jfreechart的数据接口由org.jfree.chart.plot.*中的不同的plot包装,与之相对应的是不同的dataset,位于 org.jfree.chart.data.*中不同的dataset接口包装。使用jfreechart作图的关键在于生一个个相应的数据集对象,,然后包装成对应的一个个绘图集plot对象,最后再包装成不同的JFreeChart对象交付输出。通过new方法可以一步步完成上面的步骤。换言之, plot类是图形的设计,render 是绘制的工具,而dataset则是填充的数据;这样就把作图的三个关键因素分别抽象成统一的接口,互想搭配出各种图形。对于可能有多套数据集的图表,如时间序列的多条曲线走势图(象几只股票),传入plot的不是数据集,而是数据集的集合,一般命名为某某collection。

通过 ChartFactory的不同方法生成不同的Chart类型,可以相应地缩小了由dataset对不同的chart对象的操作过程代码量,直接获得 chart对象。实际上是由工厂类代替用户生成必要的render和plot类,如果用户不想使用默认的设置,就需要再通过get方法得出相应的plot 对象进行修改。jfreechart的最后图像输出一般由org.jfree.chart.ChartUtilites完成,这个类可以向接定的 PrintWriter对象输出完成的Chart对象。在服务器程序中,另一个ServerUtilites方法调用了这个方法,生成一个图像临时文件,并向JSP或servlet返回这个文件对象,通过把这个图像的生命周期与session绑定,希望可以实现缓冲功能,降低服务器动态生成图像的损耗。但是也有很大的问题其一就是如果session很长,就等于不能生成实时图像,其二就是访问的人多了,服务器的负担似乎反而加大了。这个算法显然有问题,倒不如修改成按时间更新一个图像更为合适。

观察代码,两者效果是一样的:

A、工厂方法:

JFreeChart chart = ChartFactory.createPieChart3D(  "2000 GDP分布比例图",  data,  true,  false,  false  );//指定获得不同的实现chart对象,含有不同的plot绘图对象   PiePlot plot = (PiePlot) chart.getPlot();//获取plot对象用于修订属性,强制造型,以便调用各自的方法plot.setLabelGenerator(new StandardPieItemLabelGenerator( "{0} = {2}", NumberFormat.getNumberInstance(), NumberFormat.getPercentInstance() ));//设定注释方式plot.setForegroundAlpha(0.5f);//设定透明度plot.setNoDataMessage("无记录内容");//无记录异常显示

B、手工生成对象

PiePlot plot = new PiePlot(dataset);

plot.setLabelGenerator(new StandardPieItemLabelGenerator( "{0} = {2}", NumberFormat.getNumberInstance(), NumberFormat.getPercentInstance() ));//设定注释方式plot.setForegroundAlpha(0.5f);//设定透明度plot.setNoDataMessage("无记录内容");//无记录异常显示

JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, false);

时间: 2024-10-25 15:20:35

jfreechart 的java对象关系简释的相关文章

Hibernate Core 4.0.0.Alpha1发布 Java语言对象关系映射解决方案

Hibernate是一种Java语言下的对象关系映射解决方案.它是使用GNU宽通用公共许可证发行的自由.开源的软件.它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架.Hibernate也是目前Java开发中最为流行的数据库持久层框架,现已归JBOSS所有. 它的设计目标是将软件http://www.aliyun.com/zixun/aggregation/7155.html">开发人员从大量相同的数据持久层相关编程工作中解放出来.无论是从设计草案还是从一个遗留数据

Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包

Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的,不是我们三言两语就能解决的,我一直想抽个时间自己再过一遍Sqlite和JDBC的,但是,大家也知道,琐事比较多,我们来说一下数据库的框架吧,事实上市面上,我觉得还可以的数据库框架有两个,ORMLite和GreenDao,我以前做的运动类的应用上,就需要存储大量的运动数据,我们最开始是在本地写数据库的

java对象序列化学习笔记

java对象|笔记 目前网络上关于对象序列化的文章不少,但是我发现详细叙述用法和原理的文章太少.本人把自己经过经验总结和实际运用中的体会写成的学习笔记贡献给大家.希望能为整个java社区的繁荣做一点事情.    序列化的过程就是对象写入字节流和从字节流中读取对象.将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,管道到另一线程中或通过网络连接将对象数据发送到另一主机.对象序列化功能非常简单.强大,在RMI.Socket.JMS.EJB都有应用.对象序列化问题在网

Hibernate及JPA 对象关系映射的简单映射策略

简单映射 近年来 ORM(Object-Relational Mapping,对象关系映射,即实体对象和数据库表的映射)技术市场 热闹非凡,各种各样的持久化框架应运而生,其中影响最大的是 Hibernate 和 Toplink.Sun 公司在充分吸收现有的优秀 ORM 尤其是 Hibernate 框架设计思想的基础上,制定了新的 JPA(Java Persistence API)规范,对现在乱象丛生的持久 化市场带来一个标准,大有统一持久化市场的气势.JPA 是通过 JDK5.0 注解或 XML

实现Castor数据绑定,第4部分:把Java对象绑定到SQL数据

本文配套源码 对于多数开发人员 - 尤其是各种Java版本的用户 - 数据绑定已经和闭包.单例(singletons).Ajax一样变为常用词汇表中的一部分了.而且和其他术语一样,数据绑定也常常被错误的定义. 特别是大部分程序员在听到数据绑定 的时候,实际上想的是XML数据绑定.加上这个小小的单词XML,造成大多数程序员忽略了相当多的功能和灵活性,尤其是如果使用 Castor API的话.这是因为对于Castor而言,XML数据绑定仅仅是其中的一部分.除了绑定到XML文档之外,Castor还提供

java的关系运算符

关系运算符生成的是一个"布尔"(Boolean)结果.它们评价的是运算对象值之间的关系.若关系是真实的,关系表达式会生成true(真):若关系不真实,则生成false(假).关系运算符包括小于(<).大于(>).小于或等于(<=).大于或等于(>=).等于(==)以及不等于(!=).等于和不等于适用于所有内建的数据类型,但其他比较不适用于boolean类型. 1. 检查对象是否相等 关系运算符==和!=也适用于所有对象,但它们的含义通常会使初涉Java领域的人找

Java对象序列化使用基础

所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象.这个过程也可以通过网络实现,可以先在Windows机器上创建一个对象,对其序列化,然后通过网络发给一台Unix机器,然后在那里准确无误地重新"装配".像RMI.Socket.JMS.EJB它们中的一种,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳. Java对象序列化机制一般来讲有两种用途: Java的JavaBeans: Bean的状态信息通常是在设计时配置的,Bean的状态信息必须被

如何精确地测量java对象的大小-底层instrument API

关于java对象的大小测量,网上有很多例子,大多数是申请一个对象后开始做GC,后对比前后的大小,不过这样,虽然说这样测量对象的大小是可行的,不过未必是完全准确的,因为过程中包含对象本身的开销,也许你运气好,正好能碰上,差不多,不过这种测试往往显得十分的笨重,因为要写一堆代码才能测试一点点东西,而且只能在本地测试玩玩,要真正测试实际的系统的对象大小这样可就不行了,本文说说java一些比较偏底层的知识,如何测量对象大小,java其实也是有提供方法的.注意:本文的内容仅仅针对于Hotspot VM,如

JAVA对象和XML文件绑定

目的     在日常工作中,我们经常处理这些编组关系:JAVA对象 <--> XML文件:JAVA对象 <--> 数据库表.本文简单介绍一下JAVA对象和XML文件之间的绑定.虽然代码简单,但解决问题的广度与思路也是非常重要的.     首先,在Maven中引入要用到的jar包. <dependency> <groupId>castor</groupId> <artifactId>castor</artifactId> &