版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料第10章 整合struts和其他框架技术(第3/3部分)1.1 整合struts和jfreechart框架在开发企业应用系统时,开发人员经常会遇到必须提供交互式图表的应用要求也就是要求应用系统能够用比如饼图、柱形图或xy散点图等二维图形直观地描述和显示出数据。但由于web应用系统程序的用户界面不及桌面应用程序(application)的图形用户界面(gui)丰富和友好,这为实现web方式下的图表技术带来了一定的复杂性。而为了能够实现web图表,一般可以采用下面的各种实现技术:1) 使用java applet小程序同时利用java本身对图形
2、编程实现的支持来显示一个图表2) 直接在web服务器端生成好图表图片文件后,再发送到前端的浏览器中显示输出3) 使用java的图表引擎jfreechart框架技术jfreechart是java平台中的一个开源图表绘制框架,可生成饼图、柱状图、散点图、时序图、甘特图等多种图表,并且可以产生png和jpeg等格式的图像输出文件。基本上能够解决目前的企业应用系统中对图表方面的功能需求。1.1.1 开源jfreechart图表框架1、开源jfreechart图表框架 1)jfreechart图表框架技术简介jfreechart框架是jfreechart公司在开源网站上的一个开源项目,该公司目前的主要产
3、品有如下的几种:1) jfreereport:报表解决工具2) jfreechart:java图形解决方案(application/applet/servlet/jsp)3) jcommon:jfreereport和jfreechart的公共类库4) jfreedesigner:jfreereport的报表设计工具jfreechart框架主要用来开发各种形式的二维图表,并且是目前比较好的java图表解决方案、并且能够应用在j2ee web应用环境(如servlet、jsp和applet)和j2se 的java 应用程序等环境。jfreechart框架能够产生出如下的各种图形:饼图(二维和三维)
4、、柱状图 (水平,垂直)、线图、点图、时间变化图、甘特图、股票行情图、混和图、温度计图和刻度图等常用商用图表;而且也可以产生将两个不同的图形组合在一起的组合效果的图形,从而可以进行数据对比。请见图10.13所示的组合效果的图形示例。所构建出的图形也可以导出为png和jpeg格式的图像,也支持对图形的放大、缩小等操作。图10.13 jfreechart框架所产生的组合效果的图形示例另外,jfreechart框架还能够将所生成的图形导出为其它格式的图像文件,目前主要支持png和jpeg 图像文件格式;而如果通过itext ( (/batik/) 技术也可以导
5、出为svg文件格式。2)jfreechart框架所创建的图表组成元素jfreechart 框架对所创建的图形对象进行了特定的抽象,一个图形对象(代表一个jfreechart类的对象)是由 texttitle(主标题)、subtitle(子标题 )和plot(图形的绘制结构,包括绘图区域和坐标轴区域)等几个主要的对象所构成的。请见图10.13所示的图示中的各个部分的说明。但每个 jfreechart图形对象只能有 1个texttitle对象,1个plot对象,但可以有多个不同的subtitle对象。并且可以对主标题对象texttitle进行背景设置、字体设置(字体类型、颜色、内容、对齐方式等操作
6、)、tooltip 设置和url 设置等方面的操作。 2、安装与配置jfreechart框架的工作环境1)jfreechart框架的官方网站读者可以从jfreechart框架的官方网站上获取最新版本的系统库和相关的技术帮助文档资料,获取的网址为/。根据该官方网站中的下载页面中的超链接,然后再下载其api的jar文件包并解开其系统包。请见图10.14所示的解包后的结果目录图示。图10.14 将下载后的jar文件包解包后的结果目录图示在其中的lib目录下提供有多个不同的系统jar包文件,各个文件的名称请见图10.15所示的图示。每个文件的具体功能请见jfree
7、chart框架中有关的技术帮助文档说明。图10.15 lib目录下提供多个不同的系统jar包文件2)将各个有关的jar包加人到应用系统的web-inf/lib目录中主要是将其中的jfreechart-1.0.5.jar、 jcommon-1.0.9.jar和gnujaxp.jar三个包文件加入到应用系统的web-inf/lib目录中。图10.16所示为在bbs论坛系统中应用jfreechart框架时所添加的系统包文件的结果图示。图10.16 添加的系统包文件的结果图示3、jfreechart框架中的几个核心类及功能说明jfreechart框架的核心类的设计也应用了mvc的设计思想,将一个具体的
8、图形实现分离为“视图(view)、控制(control)和模型(model)”三大部分。1)org.jfree.chart包和org.jfree.data包jfreechartt框架主要由两个大包所组成:org.jfree.chart和org.jfree.datat包。前者主要与图形本身的类型和显示风格有关,后者则与构成图形的结构所需要的数据有关。2)org.jfree.chart包中的jfreechart类及作用它代表所要创建的图表对象,开发者可以对该对象进行属性定制设置而产生出满足要求的图形。在jfreechart框架中也提供了一个工厂类chartfactory用于创建不同类型的图表对象,
9、这样可以减少编程创建图表的代码量。jfreechart类作为图表的“控制器”的角色组件,开发人员可以以两种不同的编程方式创建出jfreechart对象。其一是利用chartfactory工厂类,而另一种方式则是利用jfreechart构造函数并传递xxplot类的对象实例。下面的【例10-19】所示的代码是利用chartfactory工厂类来创建jfreechart类的对象代码示例,该工厂类提供了多个不同形式的工厂方法用于生成不同的图形对象。【例10-19】利用chartfactory工厂类创建jfreechart类的对象代码示例defaultpiedataset pie3ddatasetda
10、ta = new defaultpiedataset(); pie3ddatasetdata.setvalue("硬盘",1500); pie3ddatasetdata.setvalue("显示器",2500); pie3ddatasetdata.setvalue("打印机",3600); pie3ddatasetdata.setvalue("内存条",450); pie3ddatasetdata.setvalue("cpu",5200);jfreechart pie3dchart = char
11、tfactory.createpiechart3d(charttitlestring,pie3ddatasetdata,true,false,false);pieplot3d plot =(pieplot3d)pie3dchart.getplot();plot.settooltipgenerator(new standardpietooltipgenerator();plot.seturlgenerator(new standardpieurlgenerator("webcharthelp.jsp");下面的【例10-20】所示的代码是利用xxplot类来创建jfreech
12、art类的对象代码示例,基于某个数据集对象构建出一个pieplot对象,并对该pieplot对象进行属性设置;然后再基于该pieplot对象创建出jfreechart类的对象。【例10-20】利用xxplot类来创建jfreechart类的对象代码示例defaultpiedataset piedatasetdata =new defaultpiedataset();piedatasetdata.setvalue("一月",2500);piedatasetdata.setvalue("二月",5000);piedatasetdata.setvalue(&q
13、uot;三月",8000);pieplot plot = new pieplot(piedatasetdata);plot.settooltipgenerator(new standardpietooltipgenerator();plot.seturlgenerator(new standardpieurlgenerator("webcharthelp.jsp");jfreechart piechart = new jfreechart(charttitlestring, jfreechart.default_title_font, plot,true);3)o
14、rg.jfree.data包及其子包中的各个xxxxxdataset类这些xxxxxdataset类都代表要创建的图形数据集对象,用于提供显示图表所用的填充数据。根据不同类型的图表将对应着不同类型的数据集类,如饼图为defaultpiedataset类等 。这些xxxxxdataset数据集类作为图表的“模型”角色组件。常用的数据集对象有:1) 柱状图数据集对象defaultcategorydataset2) 饼图数据集对象defauldpiedataset3) 曲线图数据集对象defaulttablexydataset其中的defaultcategorydataset类实现categoryd
15、ataset 接口,并且维护了一个三元的集合(值、行和列)的数据表结构。但不同的实现类中“值”的类型是不相同的,并且通过行和列唯一地确定该集合中的元素。而piedataset 接口有两个主要的实现类categorytopiedataset和defaultpiedataset,它们都能够维护一个二元集合(键和值)的数据表结构,并且由“键”唯一地确定该集合中的元素。请见【例10-20】中的黑体部分的代码示例。4)org.jfree.chart.plot包中的各个xxxxxplot类这些实现绘制功能的xxxxxplot类代表图表区域对象,它们决定图表的样式并实现图形的设计功能。创建这些对象需要其它的
16、辅助类对象如axis(domainaxis区域轴,相当于 x 轴;rangeaxis范围轴,相当于 y 轴)坐标轴、renderer(比如 compassplot 、 contourplot 、 multiplepieplot 、 pieplot 等绘制的工具类)以及数据集对象的支持。这些xxxxxplot类作为图表的“视图”角色组件。一般是通过jfreechart 对象获得它,然后再通过它对图形的外观部分进行控制和调整以产生出满足应用要求的图形plot 对象是根据数据集datset对象和下面将要介绍的属性设置的工具类renderer 对象完成具体的绘图操作。常用的plot对象有:1) 柱状图
17、categoryplot2) 饼图pieplot3) 曲线图xyplot所有的 plot 共有的操作有:背景设置(背景颜色、背景图片、透明度等)、前景透明度设置、显示的字符内容、显示的字体、显示的 paint等方面的设置和放大缩小比例的设置等。5)org.jfree.chart.renderer包及其子包中的各个xxxxxrenderer类这些xxxxxrenderer类主要是负责如何显示一个图表对象,为绘制的工具类。提供这些类的主要目的是为了包装jdk中的graphich2d类,从而不再需要直接对graphich2d类中的各种图形的属性进行设置,而只需要编程所包装的各个xxxxxrender
18、er类就可以达到必要的绘图预定的设计效果与绘制的具体图形相关的各个方面的属性设置都可以通过编程相应的renderer类对象实现。常用的绘制工具类(renderer)有:1) 柱状图显示效果defaultcategoryitemrenderer 2) 曲线图显示效果standardxyitemrenderer3) 饼图的renderer下表10.1所示,给出一些常见的图形中的数据集对象(dataset)、绘制(plot)和绘制的工具(renderer)类之间的关系,它们之间相互组合将能够产生出各种不同的图形。表10.1 数据集对象、绘制和renderer类之间的关系图形数据集绘制接口render
19、er饼图piedataset(defaultpiedataset)pieplot柱状图catagorydataset(defaultcategorydataset)categoryplot barrenderer折线图catagorydataset(defaultcategorydataset)categoryplot lineandshaperenderer时间序列图 xydataset(xyseriescollection)xyplotxylineandshaperendererxydataset (timeseriescollection)6)org.jfree.chart.axis包中
20、的各个xxxxxaxis类主要用于处理图表的纵轴和横轴的表示和实现,在jfreechart 框架中提供了两种类型的坐标轴:categoryaxis(等级轴)和 valueaxis(值轴)。而其中的valueaxis类又有 3 个不同的子类: dateaxis (时间日期轴)、numberaxis (数字轴)、periodaxis (时期轴)。对xxxxxaxis类对象可进行的共同的操作有:标题的设置(主要涉及内容、字体、paint、显示角度等)、坐标线的设置(主要涉及笔画、paint、是否可见等)、刻度线的设置(主要涉及是否可见、笔画、paint、位于绘图区域的长度、位于绘图区域外的长度等)、
21、刻度标示的设置(主要涉及笔画、paint、字体、与轴的距离等)、坐标轴范围设置等。 另外,对categoryaxis 对象还可以进行的操作有: 刻度标示间距设置(最小间距、最大间距、指定间距)等;而对于valueaxis 对象可进行的操作有:轴端设置(显示的图形形状)、范围设置(是否自动产生范围、自动产生的最小范围、最大范围、指定确定范围、指定范围大小等)、间隔设置(是否自动产生间隔、指定间隔)等;对于dateaxis 对象则主要有对时间刻度显示格式的设置操作。7)org.jfree.chart.labels包及其子包中的各个xxxxxtooltipgenerator类这些xxxxxtoolt
22、ipgenerator类主要是显示图形中的项目(labels) 和tooltips帮助(也就是用于生成图象的帮助提示,但不同类型的图表需要采用不同类型的工具提示类)。常用的有:l standardxytooltipgeneratorl standardcategorytooltipgeneratorl standardpieitemlabelgenerator8)org.jfree.chart.urls包及其子包中的各个xxxxxurlgenerator类这些xxxxxurlgenerator类主要是用于生成web图表中每个项目的鼠标点击的超链接,常用的urlcenerator有:l stan
23、dardcategoryurlgenerator l standardpieurlgenerator l standardxyurlgenerator4、org.jfree.chart.servlet包中的各个实用类功能说明1)org.jfree.chart.servlet包中的三个实用类在org.jfree.chart.servlet包中提供有chartdeleter、displaychart和servletutilities三个实用工具类。这些工具类的功能说明文字请见图10.17所示的jfreechart框架api帮助内容的图示,读者可以参考这些api帮助进一步地了解它们的功能。2)org
24、.jfree.chart.servlet.chartdeleter类的主要功能 jfreechart在工作过程中,会将所生成的图表以某一图形文件的方式保存在系统的temp目录下,如在tomcat下的工作状态如下图10.18所示。因此,开发人员通过chartdeleter类可以用于实现当会话session 结束时(如用户关闭浏览器或者会话session超时),将自动地删除保存在临时目录中的各个图像文件(因为chartdeleter类实现了httpsessionbindinglistener接口,能够监控会话session的工作状态),从而避免在服务器中产生大量的垃圾图像文件。3)org.jfre
25、e.chart.servlet.displaychart类的主要功能它继承自httpservlet ,因此是一个标准的j2ee web servlet组件,其主要的功能是将图片文件的二进制流数据写入到httpservletresponse的输出流中,然后再向浏览器输出,这样将可以在客户端浏览器中能够看到所显示输出的图像内容。该displaychart类是jfreechart框架中所内带的,开发人员可以通过向它发出请求而实现向页面输出显示所产生的图表文件的内容。如下面的url地址的示例::8080/webbbs/displaychartservlet?filenam
26、e=jfreechart-54188.png。图10.17 org.jfree.chart.servlet包的api帮助内容的图示图10.18 jfreechart在工作过程中所产生的临时图像文件由于displaychart类是一个标准的j2ee web servlet组件,因此需要将它在web应用系统的部署描述文件web.xml中加以部署和定义。具体的部署定义的标签内容请见【例10-21】中的示例。【例10-21】在系统的部署描述文件web.xml中对displaychart类加以部署和定义的示例<servlet> <servlet-name>displaychart
27、</servlet-name> <servlet-class>org.jfree.chart.servlet.displaychart</servlet-class> </servlet> <servlet-mapping> <servlet-name>displaychart</servlet-name> <url-pattern>/displaychartservlet</url-pattern> </servlet-mapping>4)org.jfree.chart.s
28、ervlet.servletutilities类根据servletutilities类的名称,可以了解到它是一个帮助功能的类,而且在该servletutilities类中提供有一系列的图形保存方法,例如savechartasxxx等形式。它们是把图表按照不同的格式存储为图象文件;下面的图10.19所示为jfreechart框架api帮助中的各种savechartasxxx方法的原形定义,利用它们可以将图形保存为jpeg和png等格式的图像。如下面的代码示例是通过把图像与会话session相互绑定,从而可以实现缓冲图像的功能,以降低服务器端重复生成图像时而带来的性能损耗。string graph
29、filename =servletutilities.savechartaspng(piechart, 600, 500, info, session);但采用该方法时也存在一些问题:其一主要是如果session的生命期比较长时,就不能生成实时的图像(因为每次请求时都希望产生出不同的结果图像);当然,其二就是如果在线访问量比较多时,对服务器的负担就会加大。而servletutilities类中的sendtempfile方法也被重载了多次,主要用于把图像的文件流数据向客户端的浏览器中发送。图10.20所示为sendtempfile方法的各种形式的重载定义。图10.19 各种savechartas
30、xxx方法的原形定义的图示图10.20 sendtempfile方法的各种形式的重载定义5、执行jfreechart框架中所带的j2se的demo示例在jfreechart框架中提供了一个java应用程序的图形显示结果的demo示例,通过执行这个demo示例能够了解jfreechart框架所能够实现的各种主要的图形及功能效果,这对开发人员应用jfreechart框架有很大的帮助。下面具体介绍和说明如何执行这个demo示例。1)执行该demo示例由于该demo示例的程序是以*.jar包文件的形式提供,因此只需要在dos命令行中输入:java -jar jfreechart-1.0.5-demo.
31、jar,将能够执行该demo示例。具体的操作方法请见图10.21所示,但要求读者的机器中应该安装jdk的系统或者有jre运行环境。图10.21执行jfreechart 框架中所带的j2se的demo示例的结果2)该demo示例的执行结果当读者按照图10.21所示的要求启动和执行该demo示例后,将能够看到下图10.22所示的界面结果。通过改变窗口中左面树形菜单中的图形的类型,可以浏览各种图表的示例效果图10.22所示的图形为垂直柱状图的显示效果。图10.22 demo示例的执行结果的图示3)浏览各种图形实现的源代码在图10.22所示的结果图中,切换到“source code”对话框页,将出现下
32、图10.23所示的显示源代码说明的文字内容。根据其说明文字,读者可以了解到其源代码是要收费的。图10.23 demo示例中的各种图形的实现源代码是收费的6、利用ant重新编译jfreechart系统包ant是一种基于java的构建(build)工具,在应用系统的开发中,利用它可以实现将源代码转换为可执行文件的形式。同样也可以利用ant工具实现对开源框架的源代码进行重构比如,对某个框架的源代码进行修改以满足本应用系统的特殊要求后,再重新生成新的jar包文件。在jfreechart框架系统包的ant目录下,提供有满足ant工具要求的build.xml文件。请见图10.24所示,在ant系统中执行该
33、build.xml文件将可以实现对jfreechart框架系统进行重构系统包。下面介绍具体的实现方法。1)在ant系统中执行该build.xml文件在dos命令行,进入到jfreechart框架系统包的ant目录中,然后在dos命令行中输入下面的命令语句:ant compile,将能够在ant系统中执行该build.xml文件。具体的操作结果请见图10.25所示,但要求读者的机器中安装有ant系统环境。图10.24 jfreechart系统包中提供有满足ant要求的build.xml文件图10.25在ant系统中执行该build.xml文件的过程图示2)将重新产生出jfreechart框架的*
34、.jar包文件,请见图10.26所示图10.26 利用ant重新编译jfreechart系统包的结果图示7、利用ant工具产生出jfreechart框架的javadoc文档1)在ant系统中执行build.xml文件以产生出javadoc文档由于在正常下载的jfreechart框架的系统包文件中没有包含其api帮助文档的文件,这给开发人员在应用jfreechart框架系统时会带来一定的不便,读者可以在ant系统中执行jfreechart框架系统所提供的build.xml文件以产生出javadoc文档。读者在dos命令行中进入到jfreechart框架系统包的ant目录中,然后在dos命令行中输
35、入下面的命令语句:ant javadoc,在ant系统中执行build.xml文件以产生出javadoc文档的各个文件。具体的操作结果请见图10.27所示。图10.27 在ant系统中执行build.xml文件以产生出javadoc文档2)将产生出图10.28所示的javadoc的文档结果图10.28 利用ant工具产生出jfreechart框架的javadoc文档的结果图示1.1.2 在bbs论坛项目中应用jfreechart框架在bbs论坛项目的后台管理的开发实现中,应用jfreechart框架技术产生出各种形式的二维图表以图形化方式显示输出系统中的各个分析处理的数据。有助于了解系统中目前
36、的访问状态和系统的性能指标。1、应用jfreechart框架的的基本方法及示例1)应用jfreechart框架的的基本步骤l 从数据库里读取数据并将数据保存到图表对应的数据集对象中,以表示将要在图形中显示的数据l 创建坐标轴对象(对某些图表可以不需要)l 创建renderer对象l 创建plot对象l 创建一个 jfreechart 对象来代表要显示的图形l 生成图片文件(或者二进制流)并向浏览器输出2)添加jfreechart框架的系统包和部署displaychart类对于基于web应用方式产生图形时,需要将jfreechart框架的系统包文件导入到当前应用系统的web-inf/lib目录中
37、,请见图10.16所示的操作结果;同时还需要在web.xml中部署显示图形的org.jfree.chart.servlet.displaychart类,具体配置内容请参考【例10-21】中的示例。在代码中对jfreechart 对象可以进行的操作有:背景的设置(背景颜色、背景图片、透明度等)、边框的设置(是否可见、笔画、 paint 等)、渲染方式的设置、标题对象的设置、子标题对象的增删查操作。下面通过在bbs论坛项目中的后台管理模块中应用jfreechart框架技术产生各种图形的实现过程为示例,介绍jfreechart框架技术的具体应用。2、利用二维和三维饼图显示各个技术分类的贴数在bbs论
38、坛项目中利用二维饼图显示各个技术分类的贴数,具体实现的代码请见下面的【例10-22】所示。该示例程序的执行结果的图形请见图10.29所示,为了简化实现的代码,具体的数据没有来自数据库表,而是直接设置。平面饼状图的plot对象是pieplot类型。pieplot对象没有x轴对象、y轴对象、绘制单元对象,数据源是piedataset对象或者其子类defaultpiedataset类。【例10-22】利用饼图显示各个技术分类的贴数的实现代码示例printwriter pw=new printwriter(out);defaultpiedataset piedatasetdata =new defau
39、ltpiedataset();piedatasetdata.setvalue("j2se技术",400);piedatasetdata.setvalue("c+语言",580);piedatasetdata.setvalue("vs.net技术",718);piedatasetdata.setvalue("软件测试",820);try pieplot plot = new pieplot(piedatasetdata);plot.settooltipgenerator(new standardpietooltipg
40、enerator(); plot.seturlgenerator(new standardpieurlgenerator("webcharthelp.jsp"); jfreechart piechart = new jfreechart(charttitlestring,jfreechart.default_title_font,plot,true);piechart.setbackgroundpaint(java.awt.color.white); chartrenderinginfo info = new chartrenderinginfo(new standarde
41、ntitycollection();graphfilename =servletutilities.savechartaspng(piechart, 600, 500, info, session); chartutilities.writeimagemap(pw, graphfilename, info,false); pw.flush();catch (exception e)pw.print("出现其它方面的异常错误:" + e.tostring();pw.flush();其中的writeimagemap(pw, filename, info)方法用于把保存的图片文件
42、以字节流的形式写入用户界面。 其中pw是java.io包的printwriter类的实例对象,该对象创建一个图形输出流。graphfilename是输出图片的文件名。该文件名来自servletutilities.savechartaspng方法创建。而参数info用于图形信息的显示。图10.29 bbs论坛分类贴数统计的二维饼图而下面的【例10-23】所示的示例为利用三维饼图显示各个技术分类贴数的实现代码,该示例程序的执行结果的图形请见图10.30所示。同样为了简化实现的代码,具体的数据没有来自数据库表,而是直接设置。【例10-23】利用三维饼图显示各个技术分类贴数的实现代码示例printwr
43、iter pw=new printwriter(out);defaultpiedataset pie3ddatasetdata = new defaultpiedataset(); pie3ddatasetdata.setvalue("设计模式",200);pie3ddatasetdata.setvalue("j2se技术",400);pie3ddatasetdata.setvalue("c+语言",580);pie3ddatasetdata.setvalue("vs.net技术",718);pie3ddatase
44、tdata.setvalue("软件测试",820);tryjfreechart pie3dchart = chartfactory.createpiechart3d(charttitlestring, pie3ddatasetdata, true, false, false);pieplot3d plot =(pieplot3d)pie3dchart.getplot();plot.settooltipgenerator(new standardpietooltipgenerator();plot.seturlgenerator(new standardpieurlgene
45、rator("webcharthelp.jsp");chartrenderinginfo info = new chartrenderinginfo(new standardentitycollection();graphfilename =servletutilities.savechartaspng(pie3dchart, 600, 500, info, session); chartutilities.writeimagemap(pw, graphfilename, info,false); pw.flush();catch (exception e) pw.prin
46、t("出现其它方面的异常错误:" + e.tostring(); pw.flush();在【例10-23】的代码示例中,是利用工厂chartfactory类中的createpiechart3d方法(参数与平面饼状图相同)创建出jfreechart 类的对象实例;另外与平面饼状图的实现差别在于其中的plot对象是pieplot3d类型。图10.30 bbs论坛分类贴数统计的三维饼图3、利用三维柱状图显示各个技术分类每月的贴数在bbs论坛项目中利用三维柱状图显示各个技术分类版块中每月的贴数,具体实现的代码请见下面的【例10-24】所示。该示例程序的执行结果图形请见图10.31所
47、示,为了简化实现的代码,具体的数据没有来自数据库表,而是直接设置。利用工厂类chartfactory中的createbarchart3d方法创建出图形对象,该方法的参数与平面柱状图相同。 三维柱状图的 plot 对象是 categoryplot 类型,数据源是 categorydataset 对象。【例10-24】利用三维柱状图显示各个技术分类每月贴数的实现代码示例printwriter pw=new printwriter(out);double data = new double672, 766, 223, 540, 126,325, 521, 210, 340, 106,332, 256
48、, 523, 240, 526;string rowkeys = "j2se技术","c+语言","vs.net技术"string columnkeys = "一月","二月","三月","四月","五月"categorydataset dataset = org.jfree.data.general.datasetutilities.createcategorydataset(rowkeys, columnkeys, data);jf
49、reechart bar3dchart = chartfactory.createbarchart3d(charttitlestring, categoryname, / 目录轴的显示标签 numberstring, / 数值轴的显示标签 dataset,plotorientation.vertical, true, / 是否显示图例(对于简单的柱状图必须是false) false, / 是否生成工具 false); / 是否生成url链接 bar3dchart.setbackgroundpaint(java.awt.color.white);categoryplot plot = bar3d
50、chart.getcategoryplot();org.jfree.chart.axis.categoryaxis domainaxis = plot.getdomainaxis();/domainaxis.setverticalcategorylabels(false); /设置 columnkey 是否垂直显示plot.setdomainaxis(domainaxis);org.jfree.chart.axis.valueaxis rangeaxis = plot.getrangeaxis();rangeaxis.setuppermargin(0.15);/设置最高的一个 item 与图片
51、顶端的距离rangeaxis.setlowermargin(0.15);/设置最低的一个 item 与图片底端的距离plot.setrangeaxis(rangeaxis);org.jfree.chart.renderer.category.barrenderer3d renderer = new org.jfree.chart.renderer.category.barrenderer3d();renderer.setbaseoutlinepaint(java.awt.color.black);renderer.setwallpaint(java.awt.color.gray);/设置 wa
52、ll 的颜色renderer.setseriespaint(0, new java.awt.color(0, 0, 255);/设置柱颜色renderer.setseriespaint(1, new java.awt.color(0, 100, 255);renderer.setseriespaint(2, java.awt.color.green);renderer.setitemmargin(0.1);/设置每月所包含的平行柱的之间距离renderer.settooltipgenerator(new org.jfree.chart.labels.standardcategorytoolti
53、pgenerator();renderer.setitemlabelsvisible(true); /显示每个柱的数值plot.setrenderer(renderer);plot.setforegroundalpha(0.6f);/设置柱的透明度plot.setdomainaxislocation(org.jfree.chart.axis.axislocation.top_or_right);plot.setrangeaxislocation(org.jfree.chart.axis.axislocation.bottom_or_right);chartrenderinginfo info = new chartrenderingi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 植树节活动方案合集15篇
- 伐木机械施工方案
- 二月中旬主治医师考试《儿科》冲刺测试卷(附答案)
- 2026年工程监理细则施工节能与绿色施工手册
- 2026事业单位联考公文改错专题训练30道附解析
- 公用事业行业深度跟踪:两会焦点培育未来能源首提算电协同
- 2026年中等职业学校教师资格考试职业教育知识与教学能力测试题题库(含答案)
- 2026边检专业真题试卷及答案
- 2026年湖南株洲市中小学教师招聘考试试题题库及答案
- 2025年民用航空飞行三级领航员考试真题及答案
- 2026年马鞍山安徽横望控股集团有限公司公开招聘工作人员考试参考试题及答案解析
- 四川省绵阳市梓潼县2026届九年级中考一模语文试卷
- 2026年上海铁路局校园招聘笔试参考题库及答案解析
- 安防监控系统维保表格
- 人教统编版六年级语文下册第二单元《习作:写作品梗概》公开课教学课件
- 2026年3月山东济南轨道交通集团运营有限公司社会招聘备考题库附参考答案详解(典型题)
- 山东省中小学生欺凌调查认定和复查复核程序指引解读
- 2026内蒙古环投集团社会招聘17人笔试备考试题及答案解析
- TSG 08-2026 特种设备使用管理规则
- 雨课堂学堂云在线《人工智能原理》单元测试考核答案
- 人教版高中物理选择性必修三 第1章第1节 分子动理论的基本内容
评论
0/150
提交评论