a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 126|回复: 2

[基础知识] JAVA基础:使用JFreeChart增强JSP报表

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
 JFreeChart是一组功能强年夜、矫捷易用的Java绘图API,使用它可以生成多种通用性的报表,搜罗柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中建造自界说的图表或报表,而且获得普遍的应用。本文将经由过程引领读者进修在JFreeChart中饼图、柱状图和曲线图的进阶应用,来达到谙练使用JFreeChart的目的。一.下载与桓崭珍置
; V: d# h  C5 d/ ~" Z8 r# |1 @3 K  1. 下载JFreeChart
: S/ l4 ^! Z8 G1 T  JFreeChart是开放源代码的免费软件,可是它的撑持文档需要付费才能获得。其下载地址为:http://sourceforge.net/project/showfiles.php?group_id=15494,捣炙殿新版本为1.0.6。笔者下载的是1.0.6最新版。
( ^9 R0 s: [- y$ e5 A' n5 G. y' _  声名:1)source目录:为jfreechart的源码目录;  M) \) g* @8 y2 O$ j
  2)lib目录:为包目录,我们需要关注的包为jfreechart-1.0.6.jar、gnujaxp.jar和jcommon-1.0.10.jar这三个包;: j& o8 N" r- Z0 C2 w) h
  3)根目录下的jfreechart-1.0.6-demo.jar是例子轨范,巨匠双击后可看到其中有良多例子的运行结不美观。
9 C2 V& q. @% u2 H  2. 桓崭珍置
7 Q; S- G) ~1 @  笔者的开发情形如下:
- c1 F. Q1 E. w# q) P7 C  JDK:1.5  |% K) N! w5 v& n6 c: L4 [  i
  MyEclipse:5.1.1 GA# }% \" H) ^9 A( Z3 R& t! |
  Tomcat:5.5.28
7 f& B$ B  J6 a6 ?1 N# |& A  为了后续的“用JFreeChart建树基于Web的图表”的一个例子的展示,我们在MyEclipse中建树一个名为jfreechart的 Web工程。将下载的JFreeChart1.0.6下lib目录下的jar包拷贝到WebRoot/WEB-INF/lib目录下。此外还需要在 web.xml文件中增添如下设置装备摆设:
3 x( i/ y* Z2 Q7 \3 D( U) e. ^  ; l- V" h& ~% |
  DisplayChart
3 @" t, {: e1 a, L  org.jfree.chart.servlet.DisplayChart
6 W4 \* A  h3 ]) |! l6 V  
) q8 f% J6 O' g- q( m  J  
: X3 q" U$ l; S9 U- j' B5 f5 ~  DisplayChart7 t0 `3 B, r9 v9 K
  /DisplayChart  ?1 V  T3 n0 [/ H
  # Q* s/ |; H! D& h
二.   柱状图
  l- ~4 L0 P2 K6 u3 H0 ]' l  在WebRoot目录下成立bar目录,用来存放柱状图的各个例子。首先在该目录下成立一个sample1.jsp文件,让我们来看一个简单的柱状图的例子,改削后的sample1.jsp的内容如下所示:5 k9 x4 S; r. Y  @: E7 z
  
4 F/ M3 h; O# `; Y3 }! ?  
' S: ~8 y, D$ x, {) |) v- E$ Q" T2 ?
! X" t+ _* W' W8 h3 E  
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:37:28 | 显示全部楼层

JAVA基础:使用JFreeChart增强JSP报表

</p>  DefaultCategoryDataset dataset = new DefaultCategoryDataset();4 R" X- Q1 @! R$ @! T6 B0 a
  dataset.addValue(610, "广州", "猪肉");1 z/ T8 \0 I* t! [* j" X
  dataset.addValue(220, "广州", "牛肉");
+ @1 Z6 b3 [3 _: b! G  dataset.addValue(530, "广州", "鸡肉");
$ e& o" g; W$ X3 Q' e- S  dataset.addValue(340, "广州", "鱼肉");  T: Q- J$ ^' |6 T' N  ^! j
  JFreeChart chart = ChartFactory.createBarChart3D("肉类销量统计图",
: S4 m8 |8 q8 g$ ]; k  "肉类",
- Q1 e4 G$ E1 Z# [5 C  "销量",7 v; B' F( F& \# M& M/ j
  dataset,
1 j+ Q: d0 k9 l" ^" B+ T) T. e7 I  PlotOrientation.VERTICAL,
% j- B8 Y. u% E7 c% d  false,
1 {! Y7 f* K/ C  false,9 L2 [: Q5 K" p7 C! U
  false);
  I4 ^) `, M2 J0 V4 w& V( i  String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
4 \7 b/ m% |5 k5 e3 [% d; ]" o- j  String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
; a+ ?! Q/ q1 T' N6 |2 s  %>! v7 f7 s7 T# l8 L1 p
  
7 q* H6 U. h+ O6 i* z  在浏览器中输入地址:http://localhost:8080/jfreechart/bar/sample1.jsp,可看到如下柱状图:
, S+ O( f( V+ W9 P  膳缦沔的这个柱状图斗劲简单,稍显单调,在有些情形下,我们需要用分歧颜色来暗示分歧的种类,或者在种类上标上具体数值,亦或需要加上3D水晶效不美观。下面让我们来做更深一步的切磋。接下来让我们看一个用分歧颜色来暗示欠亨种类的例子。在WebRoot的bar目录下新建sample2.jsp页面,将其代码改削如下:8 t# r# [% @1 c; \0 _: E
  ( C# S% b! Q% I
  
. y' [* a1 J8 ^  [: u  C: d3 ^* u( q* O, J' @$ Z5 S+ W9 ~) E1 [
  
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-4 12:37:29 | 显示全部楼层

JAVA基础:使用JFreeChart增强JSP报表

</p>  String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
& G$ h4 p' }7 k& x  String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;* ?* n' q* [% J! ?/ f- @
  %>
* M% Y# p$ _% N) A4 C  
2 w: G3 Q' N$ i" t/ E  对比该例与前例,可看出createBarChart3D的倒数第三个参数改削成了true,该参数可用来显示下方的:。上两例我们显示的只是一个城市的肉类销量,有时辰我们有对比显示多个城市的分歧肉类,只要将上例稍作改削即可。例如要在图中暗示广州、深圳、东莞、佛山四个城市的四个肉类的发卖情形,只需要将如下三句稍做改削:" L# C3 v# M; }5 Q) Z2 W, f: _
  double[][] data = http://www.qnr.cn/pc/java/fudao/jichu/200912/new double[][] {{1310}, {720}, {1130}, {440}};% _3 C9 a+ z( z; g& I% |
  String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"};% z2 T6 [- b& p# e! s$ x6 B
  String[] columnKeys = {""};: H6 Y: K! D+ L) R  a7 R( ?
  例如改削成:9 S! e% Z, u) A2 L9 J. {
  double[][] data = http://www.qnr.cn/pc/java/fudao/jichu/200912/new double[][] {{1310, 1220, 1110, 1000},
2 R. a- k  G- h7 q# B5 z. c: }  {720, 700, 680, 640},4 D3 S* N; k9 m- e- D& ^& P
  {1130, 1020, 980, 800},+ L: [* g, G# f" b  n$ \9 o; R, Y
  {440, 400, 360, 300}};+ V* c5 t# T) H; ?) ?/ M! ?
  String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"};
. J' k! x' ?" x. x$ G: u  String[] columnKeys = {"广州", "深圳", "东莞", "佛山"};
2 q! v. ?1 D! r$ j6 s  h4 S& p  在运行该jsp页面,可看到如下界面:+ Q  [! w. u, W7 C9 }
  在上述几例中,在某个柱子上都没有显示响应的数值,下面让我们为每个柱子都加上它的数值,我们新建一个sample4.jsp页面,其内容如下:4 s* [, N6 _& P6 z! h3 z
  
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-16 06:05 , Processed in 0.259162 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表