使用JfreeChart创建基于WEB的图形报表newWord格式文档下载.docx

上传人:b****6 文档编号:20562934 上传时间:2023-01-24 格式:DOCX 页数:95 大小:317.26KB
下载 相关 举报
使用JfreeChart创建基于WEB的图形报表newWord格式文档下载.docx_第1页
第1页 / 共95页
使用JfreeChart创建基于WEB的图形报表newWord格式文档下载.docx_第2页
第2页 / 共95页
使用JfreeChart创建基于WEB的图形报表newWord格式文档下载.docx_第3页
第3页 / 共95页
使用JfreeChart创建基于WEB的图形报表newWord格式文档下载.docx_第4页
第4页 / 共95页
使用JfreeChart创建基于WEB的图形报表newWord格式文档下载.docx_第5页
第5页 / 共95页
点击查看更多>>
下载资源
资源描述

使用JfreeChart创建基于WEB的图形报表newWord格式文档下载.docx

《使用JfreeChart创建基于WEB的图形报表newWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《使用JfreeChart创建基于WEB的图形报表newWord格式文档下载.docx(95页珍藏版)》请在冰豆网上搜索。

使用JfreeChart创建基于WEB的图形报表newWord格式文档下载.docx

●barcharts(regularandstacked,withanoptional3Deffect);

●lineandareacharts;

●scatterplotsandbubblecharts;

●timeseries,high/low/open/closechartsandcandlestickcharts;

●combinationcharts;

●Paretocharts;

●Ganttcharts;

●windplots,meterchartsandsymbolcharts;

●wafermapcharts;

JfreeChart提供的其他特性:

●completesourcecodeisincluded,underthetermsoftheGNULesserGeneralPublicLicence;

●accesstodatafromanysourceviadatasetinterfaces;

●supportformultiplesecondaryaxesanddatasets;

●tooltips,zooming,printing;

●directexporttoPNGandJPEG;

●exporttoPDFviaiTextandSVGviaBatik(bothdescribedintheJFreeChartDeveloperGuide).

●支持servlets,JSP(感谢Cewolf),applets或者JavaApplication;

●完善的Javadoc文档;

第二章体验JFreeChart

本章采用JfreeChart的演示程序说明JfreeChart的基本功能。

2.1环境

可以采用Javac+UltraEdit方式演示,本文讲述依赖JbuilderXIDE开发。

首先,解压缩jfreechart-0.9.16.zip包。

获得jfreechart包,最新包为0.9.21版本。

1,将src/org/jfree/chart/目录下的demo目录保留,删除其他目录。

2,将jfreechart-0.9.16.jar包放到lib目录下。

3,建立Jbuilder工程;

工程应用四个gnujaxp.jar;

jcommon-0.9.1.jar;

jfreechart-0.9.16.jar;

servlet.jar

4,编译工程。

5,以Application方式运行各个Demo。

6,工程增加一个WEBModule,命名为cewolf,支持Servlet。

2.2运行

由于我们主要是WEB应用,所以演示以Servlet运行。

1,在src/org/jfree/chart/demo目录下增加下面的文件

packageorg.jfree.chart.demo;

importjava.io.IOException;

importjavax.servlet.*;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.ServletException;

importjavax.servlet.http.Cookie;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.http.HttpSession;

importorg.jfree.data.*;

importorg.jfree.chart.*;

/**

*演示通过servlet直接输出图表

*@authorWinterLau

*/

publicclassBarChart3DDemo2SextendsHttpServlet{

//ProcesstheHTTPPostrequest

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throws

ServletException,IOException{

doGet(request,response);

}

//ProcesstheHTTPGetrequest

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throws

response.setContentType("

image/jpeg"

);

DefaultPieDatasetdata=getDataSet();

JFreeChartchart=ChartFactory.createPie3DChart("

水果产量图"

data,

true,

false,

false

);

ChartUtilities.writeChartAsJPEG(response.getOutputStream(),

100,chart,400,300,null);

}

/**

*获取一个演示用的简单数据集对象

*@return

privatestaticDefaultPieDatasetgetDataSet(){

DefaultPieDatasetdataset=newDefaultPieDataset();

dataset.setValue("

苹果"

100);

梨子"

200);

葡萄"

300);

香蕉"

400);

荔枝"

500);

returndataset;

}

2,编译程序

3,配置web.xml文件

<

?

xmlversion="

1.0"

encoding="

UTF-8"

>

!

DOCTYPEweb-appPUBLIC"

-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN"

"

web-app>

<

servlet>

servlet-name>

BarChart3DDemo2S<

/servlet-name>

servlet-class>

org.jfree.chart.demo.BarChart3DDemo2S<

/servlet-class>

/servlet>

/web-app>

4,启动Tomcat,运行

http:

//localhost:

8080/cewolf/BarChart3DDemo2S

5,在IE浏览器上可以看到如下图片,则恭喜你成功了!

6,有兴趣可以实现下面几个图片

曲线图

柱状图

2.3问题

遇到问题了么,学会利用Jbuilder自己建立一个WEB工程吧!

2.4JFreeChart实现图形和应用交互

很多情况我们不仅仅要求可以在浏览器上显示一个图表,我们更需要客户可以直接在图表上做一下交互的操作,例如获取信息提示,点击图表某个部分进行更详细信息的展示等等。

例如前面生成的简单柱状图,用户需要在看到柱状图后点击某种水果例如是苹果即可看到各个地区苹果产量的情况。

为此就要求该图形具有交互操作的功能。

在HTML中为了让一个图像具有可交互的功能就必须给该图像定义一个Map对象。

下表节选一段具有该功能的HTML代码

MAPNAME="

chartMap"

AREASHAPE="

RECT"

COORDS="

81,15,126,254"

href="

series=0&

category=100"

title="

100=7,048"

onclick="

javascript:

clickChart('

100'

returnfalse;

"

143,27,188,255"

category=200"

200=6,721"

clickChart('

200'

205,54,250,255"

category=300"

300=5,929"

300'

267,85,312,255"

category=400"

400=5,005"

400'

329,17,374,255"

category=Diet"

Diet=7,017"

Diet'

/MAP>

由此就产生了一个问题:

如果根据一个图像来生成对应的MAP对象。

我们回头看看刚才的代码,在创建一个图表对象时候有两个参数,我们举柱状图的例子来讲这两个参数就是ChartFactory.createBarChart3D方法中的最后两个参数,这两个参数的类型都是布尔值。

这两个参数意思分别是:

是否创建工具提示(tooltip)以及是否生成URL。

这两个参数分别对应着MAP中一个AREA的title属性以及href属性。

可是我想知道的是怎么来产生这个MAP啊!

哈哈,不要着急,JFreeChart已经帮我们做好生成MAP对象的功能。

为了生成MAP对象就要引入另外一个对象:

ChartRenderingInfo。

因为JFreeChart没有直接的方法利用一个图表对象直接生成MAP数据,它需要一个中间对象来过渡,这个对象就是ChartRenderingInfo。

下图是生成MAP数据的流程图:

如上图所示,ChartUtilities类是整个流程的核心,它周围的对象都是一些例如数据对象或者是文件等。

这个流程简单描述如下:

首先创建一个ChartRenderingInfo对象并在调用ChartUtilities的writeChartAsJPEG时作为最后一个参数传递进去。

调用该方法结束后将产生一个图像文件以及一个填充好MAP数据的ChartRenderingInfo对象,有了这个对象我们还是没有办法获取具体的MAP数据,我们还必须借助于ChartUtilities的writeImageMap方法来将ChartRenderingInfo对象读取出来。

下面一段程序是JavaApplication方式运行,生成一个html文件,运行该html文件可以展示交互效果。

importjava.io.BufferedOutputStream;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.OutputStream;

importjava.io.PrintWriter;

importorg.jfree.chart.ChartFactory;

importorg.jfree.chart.ChartRenderingInfo;

importorg.jfree.chart.ChartUtilities;

importorg.jfree.chart.JFreeChart;

importorg.jfree.chart.axis.CategoryAxis;

importorg.jfree.chart.axis.NumberAxis;

importorg.jfree.chart.axis.ValueAxis;

importorg.jfree.chart.entity.StandardEntityCollection;

importorg.jfree.chart.labels.StandardCategoryItemLabelGenerator;

importorg.jfree.chart.plot.CategoryPlot;

importorg.jfree.chart.plot.PlotOrientation;

importorg.jfree.chart.renderer.BarRenderer;

importorg.jfree.chart.urls.StandardCategoryURLGenerator;

importorg.jfree.data.CategoryDataset;

importorg.jfree.data.DatasetUtilities;

*AdemoshowinghowtocreateanHTMLimagemapwithJFreeChart.

*

*@authorDavidGilbert

publicclassImageMapDemo1{

*Defaultconstructor.

publicImageMapDemo1(){

*Startingpointforthedemo.

*@paramargsignored.

publicstaticvoidmain(String[]args){

//createachart

double[][]data=newdouble[][]{

{56.0,-12.0,34.0,76.0,56.0,100.0,67.0,45.0},

{37.0,45.0,67.0,25.0,34.0,34.0,100.0,53.0},

{43.0,54.0,34.0,34.0,87.0,64.0,73.0,12.0}

};

CategoryDatasetdataset=DatasetUtilities.createCategoryDataset("

Series"

"

Type"

data);

JFreeChartchart=null;

booleandrilldown=true;

if(drilldown){

CategoryAxiscategoryAxis=newCategoryAxis("

Category"

ValueAxisvalueAxis=newNumberAxis("

Value"

BarRendererrenderer=newBarRenderer();

renderer.setItemLabelGenerator(newStandardCategoryItemLabelGenerator());

renderer.setItemURLGenerator(newStandardCategoryURLGenerator("

bar_chart_detail.jsp"

));

CategoryPlotplot=newCategoryPlot(dataset,categoryAxis,valueAxis,renderer);

plot.setOrientation(PlotOrientation.VERTICAL);

chart=newJFreeChart("

BarChart"

JFreeChart.DEFAULT_TITLE_FONT,plot,true);

else{

chart=ChartFactory.createBarChart(

VerticalBarChart"

//charttitle

//domainaxislabel

//rangeaxislabel

dataset,//data

PlotOrientation.VERTICAL,

true,//includelegend

chart.setBackgroundPaint(java.awt.Color.white);

//****************************************************************************

//*JFREECHARTDEVELOPERGUIDE*

//*TheJFreeChartDeveloperGuide,writtenbyDavidGilbert,isavailable*

//*topurchasefromObjectRefineryLimited:

//**

//*http:

//www.object-*

//*SalesareusedtoprovidefundingfortheJFreeChartproject-please*

//*supportussothatwecancontinuedevelopingfreesoftware.**

//saveittoanimage

try{

ChartRenderingInfoinfo=newChartRenderingInfo(newStandardEntityCollection());

Filefile1=newFile("

barchart100.png"

ChartUtilities.saveChartAsPNG(file1,chart,600,400,info);

//writeanHTMLpageincorporatingtheimagewithanimagemap

Filefile2=newFile("

barchart100.html"

OutputStreamout=newBufferedOutputStream(newFileOutputStream(file2));

PrintWriterwriter=newPrintWriter(out);

writer.println("

HTML>

HEAD>

TITLE>

JFreeChartImageMapDemo<

/TITLE>

/HEAD>

BODY>

ChartUtilities.writeImageMap(writer,"

chart"

info);

IMGSRC=\"

barchart100.png\"

+"

WIDTH=\"

600\"

HEIGHT=\"

400\"

BORDER=\"

0\"

USEMAP=\"

#chart\"

/BODY>

/HTML>

writer.close();

catch(IOExceptione){

System.out.println(e.toString());

第三章体验CeWolf标签库

简单的说,Cewolf以MVC框架的方式提供一个基于JFree

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1