Java图表开发-JFreeChart
来源:互联网 发布:red5 flash 开发端口 编辑:程序博客网 时间:2024/04/19 17:01
组件下载地址:http://sourceforge.net/project/showfiles.php?group_id=15494/
应用基于JAVA的图表开发,基本能够解决目前的图形方面的需求, 图形可以导出成PNG和JPEG格式,同时还可以与PDF和EXCEL关联。免费使用,有在线文档,但开发向导文档是收费的。
安装配置 ,我下载的是最新的jfreechart-1.0.1 版本,解压到指定的位置,在开发中需要的lib文件夹下的jcommon-1.0.0和jfreechart-1.0.1两个jar文件。 把上述三个文件拷贝到WEB-INF/LIB中,然后修改WEB-INF/web.xml文件,在其中加入<servlet>
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>
至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。
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开发图表的过程
调用与图形本身有关的API (org.jfree.chart),设置图表的标题,图片的背景颜色,图片的大小(长度和高度),还有一些其它的属性的设置。将图片保存为png 或是jpeg格式,输出图表。使用PieDataset,JDBCPieDataset调用JDBC驱动连接数据库。在jsp页面中获取URL,用img标签显示图片。
示例代码:
PieChart.java //设置饼图的属性
package org.jfree.chart.demo;
import java.io.PrintWriter;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.general.PieDataset;
public class PieChart {
/**
* @param request
* @param session
* @param pw
* @return string
*/
public String generatePieChart(HttpServletRequest request, HttpSession session, PrintWriter pw) {
String filename = null;
try{
ConnDb object = new ConnDb();
PieDataset data = object.readData();
PiePlot plot = new PiePlot(data);
JFreeChart chart = new JFreeChart("",JFreeChart.DEFAULT_TITLE_FONT, plot, true);
//可选,设置图片背景色
chart.setBackgroundPaint(java.awt.Color.white);
//可选,设置图片标题
chart.setTitle("efei公司地区销售统计");
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
//500是图片长度,300是图片高度
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);
ChartUtilities.writeImageMap(pw, filename, info,false);
pw.flush();
}catch(Exception e) {
System.out.println("Exception - " + e.toString());
e.printStackTrace(System.out);
filename = "public_error_500x300.png";
}
return filename;
}
}
连接数据库
ConnDb.java
package org.jfree.chart.demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.jfree.data.general.PieDataset;
import org.jfree.data.jdbc.JDBCPieDataset;
public class ConnDb {
public PieDataset readData() {
JDBCPieDataset data = null;
String url = "jdbc:oracle:thin:@host:1521:efei";
Connection con;
try {
Class.forName("oracle.jdbc.OracleDriver");
}
catch (ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}
try {
con = DriverManager.getConnection(url, "jefflan", "efei");
data = new JDBCPieDataset(con);
String sql = "SELECT description,value FROM efei";
data.executeQuery(sql);
con.close();
}
catch (SQLException e) {
System.err.print("SQLException: ");
System.err.println(e.getMessage());
}
catch (Exception e) {
System.err.print("Exception: ");
System.err.println(e.getMessage());
}
return data;
}
}
jsp中显示图片:
pieChart.jsp
<%@ page import="org.jfree.chart.demo.PieChart"%>
<%@ page import = "java.io.PrintWriter" %>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<HTML>
<HEAD>
<TITLE>pieChart</TITLE>
</HEAD>
<BODY>
<%
PieChart pie = new PieChart();
String filename = pie.generatePieChart(request,session,new PrintWriter(out));
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;%>
<P ALIGN="CENTER">
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">
</P>
</BODY>
</HTML>
建表语句:
CREATE table EFEI(
ID NUMBER(15) PRIMARY KEY not null,
DESCRIPTION VARCHAR2(200),
VALUE NUMBER(15))
运行程序显示的图表如下:
- Java图表开发-JFreeChart
- JFreeChart开发各种图表
- 【Java图表绘制-JFreeChart】
- 使用JfreeChart开发图表经验总结
- 使用JfreeChart开发图表经验总结
- 使用Jfreechart开发图表应用程序
- 利用JFreeChart进行图表开发
- Ireport+jfreechart+Jasperreport开发图表
- Ireport+jfreechart+Jasperreport开发图表
- 【JAVA图表】Jfreechart常用图表总结
- JFreeChart (Java开源图表)
- java生成图表---采用jfreechart
- java使用JFreeChart生成图表
- java图表-使用JfreeChart画散点图
- 使用JfreeChart开发图表经验总结(含源码)
- 使用JfreeChart开发图表经验总结 转帖
- 项目中用jfreechart插件开发统计图表
- 使用JFreeChart整合Struts2开发图表
- 编译原理学习导论
- 光荣与失落----开发工程师的人生之路
- 什么是脏数据,脏读,不可重复读,幻觉读?
- ASP直接调用EXCEL数据的例子
- 软件测试演义之外的话题——测试人员招聘的尴尬
- Java图表开发-JFreeChart
- 注册机破解法的原理和应对方法
- ANSI SQL中定义的4个隔离级
- ubuntu root 密码 的问题 (转载自笑容网事)
- ASP.NET调试过程中的离奇问题
- 事务和锁
- 软件暴力破解的原理和应对方法
- 第一步:测试
- 如何避免Java程序的数据脏读问题?