注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > Java 内容正文:Java程序中用JFreeChart制作图形报表

Java程序中用JFreeChart制作图形报表

发布时间:2006-05-08 16:14:37 来源: 网友评论 0 条

  一、需求分析

  我家领导认为,在是否嫁给我做老婆的问题上,应该有更加科学的决策模型。如果能够将每天的感情生活量化,且以时间为X轴,生成数据报表,就可以为她的决策提供数据支持。秉着以领导意志为导向的基本原则,开发了本软件,为家庭信息化建设提供新的思路。

  二、系统概述

  本系统的基本功能是,接收用户每天的输入并保存,月/季度/年度末生成数据折线图、周期环比柱状图。由于投入资金有限(不让我往外掏钱就已经很不错了),所以本软件的1.0版采用单机应用程序,使用Access数据库。如果市场推广情况良好,不排除推出大型FRP软件(Family Resource Project)的可能,届时将包含KRM(Kin Relation Manage,家族关系管理)、HA(House Automatization,家庭自动化)等模块,利用强大的J2EE框架,为家庭信息化建设提供完整解决方案。

  程序生成的目标图片效果如下:


  三、系统要求

  1、 开源工具包jfreechart-1.0.0-pre1.jar和它自己要使用的工具包jcommon-1.0.0-pre1.jar

  下载地址:http://sourceforge.net/projects/jfreechart/

  2、 女朋友一个。

  请自行准备,暂不提供下载

  下面主要讲述系统是如何从数据库中提取数据,然后生成图形报表的。(终于进入正题了。)

  数据表结构:

curve_id流水号自动增长
curve_ownervarchar(30)区分是老公的数据还是老婆的数据
curve_centdouble当天分数
curve_yearint年
curve_monthint月
curve_dayint日
notetext备注

  用于封装每个分数的值对象如下:

package org.bromon.fiona.curve.dao;

import java.util.*;

public class CurveVo
{
private int year;

private int month;

private int day;

   private double cent;

   private String note;

    private String owner;

    //get/set方法

…………
}

   生成图片的关键代码如下:

package org.bromon.fiona.curve.util;

//一大堆import

public class DrawPic
{
  /**
   *根据时间查询数据,将所得到的数据封装成TimeSeriesCollection对象
   *TimeSeriesCollection是JfreeChart中定义的类的对象
   *本方法将被后面的draw方法调用
   *@param int 要查询哪一年
   *@param int 要查询哪一月
   *@return TimeSeriesCollection
  */

  public TimeSeriesCollection getData(int year,int month)
  {
   //fiona的数据集合,其中存放的是上面定义过的CurveVo值对象
   //这些值对象的值来自于数据库,相关代码是最常见的jdbc内容,请自行完成

   List dataOfFiona=new ArrayList();

   //Bromon的数据集合

   List dataOfBromon=new ArrayList();

   //构造要返回的对象

   TimeSeriesCollection result=new TimeSeriesCollection();

   //这两个对象,分别对应一条曲线,构造函数的参数,将显示在图片的下方

   TimeSeries fiona=new TimeSeries("fiona");
   TimeSeries bromon=new TimeSeries("bromon");
   CurveVo cv=null;
   //遍历Fiona的数据集,填充fiona对象

   for(int i=0;i<dataOfFiona.size();i++)
   {
    cv=(CurveVo)dataOfFiona.get(i);
    fiona.add(new TimeSeriesDataItem(new Day(cv.getDay(),cv.getMonth(),cv.getYear()), new Double(cv.getCent())));

   }
   result.addSeries(fiona);
   for(int i=0;i<dataOfBromon.size();i++)
   {
    cv=(CurveVo)dataOfBromon.get(i);
    bromon.add(new TimeSeriesDataItem(new Day(cv.getDay(),cv.getMonth(),cv.getYear()),new Double(cv.getCent())));

   }
   result.addSeries(bromon);
  }
  //生成图表的方法,图表数据来自上面的getData方法

  public String draw(int y,int m)
  {
   String result=null;
   String title="Bromon & Fiona的爱情走势图";
   String subTitle=y+"年"+m+"月";
   String domain="时间";//x轴
   String range="分值";//y轴
   TimeSeriesCollection data =this.getData(y,m);
   JFreeChart chart =ChartFactory.createTimeSeriesChart(title,domain,range,data,true,true,false);
   TextTitle subtitle =new TextTitle(subTitle, new Font("宋体", Font.BOLD, 20));
   chart.addSubtitle(subtitle);
   chart.setTitle(new TextTitle(title, new Font("宋体", Font.ITALIC, 20)));
   chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.white));
   c.setTime(new Date());
   String fileName="c://pics//"+y+""+m+".jpg";//保存为位置
   try
   {
    File f=new File("c://pics");
    if(!f.exists())
    {
     f.mkdir();
    }
    ChartUtilities.saveChartAsJPEG(new File(fileName), 100, chart, 1000, 600);//宽1000,高600
   } catch (Exception e)
   {
    e.printStackTrace();
   }
   result=fileName;
   return result;
  }

  //ok,测试一下

  public static void main(String args[])
  {
    new DrawPic().draw(2005,3);
  }
}

   生成环比柱状图的相关内容,整理后放出。

   JfreeChart的绘图功能很强大,但是API的编写有些地方让人很不舒服,很多元素要定制不容易。如果有更好的API的话,我很愿意使用,当然,免费是个很重要的前提。

相关文章
  • 在Java程序中实现高精度打印
  • 漫谈Java程序的性能优化
【评论】【收藏本文】【打印】【关闭】
上一篇文章:JBuilder2005实现重构之重命名
下一篇文章:轻量级的代码生成方案选择
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
Java控件设计入门
Java控件设计入门
推荐阅讯
  • 用Javascript实现评估用户输入密码的强度
  • J2ME移动2D图形开发快速入门
  • JAVA对数字证书的常用操作
  • Java 程序初始化过程详解
  • Flash Lite Vs. J2ME
  • Java开源IOC容器Fuse 0.2 Final发布
  • Java的一些编码基础
  • J2ME游戏开发中时钟的简单实现
  • 编写多线程Java应用程序常见问题
  • Java: JNI完全手册
阅读排行
  • 1.Java连接SQL Server 2000
  • 2.Java文件操作详解
  • 3.Java控件设计入门
  • 4.Java操作Excel电子表格
  • 5.Java: JNI完全手册
  • 6.Java命令行简介
  • 7.开发J2EE应用应遵循的几点原则
  • 8.Servlet与Javabean配置
  • 9.Java规则引擎与其API应用详解
  • 10.CLASSPATH详解
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载