仓酷云

标题: JAVA教程之轻松利用JSP天生饼图 [打印本页]

作者: 飘飘悠悠    时间: 2015-1-18 11:38
标题: JAVA教程之轻松利用JSP天生饼图
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。js|饼图
JSP供应了良多复杂有用的工具,个中包含从数据库中读出数据,发送数据,并可以把了局显现在一个饼状图形。如今让我们看看这一复杂而有用的办法。你所必要的工具

为了能准确运转这一文章相干的典范,你必需必要JDK1.2或更高的版本、一个干系数据库办理体系、一个JSP收集服务器。我都是在Tomcat调试这些例子,同时我也利用了SunJava2SDK公布的com.sun.image.codec.jpegclasses。
数据库计划
假定你在一家处置发卖奇怪生果的公司下班,公司出卖的生果包含:苹果、桔子、葡萄。如今你的老板想用一个饼状图形显现每种生果的总出卖量,饼状图形能使每种产物的发卖情形一览无余,老板能够敏捷把握公司的产物成友爱况。
表A利用了本文中的两种数据库列表。第一种列表(Products)包括一切发卖产物的称号;第二种列表(Sales)包括每种产物对应的发卖量。
产物(Products)列表包括productID和productname两个域。发卖(Sales)列表包括saleID,productID,和总额。发卖列表中的productID供应了这两个列表之间的联系关系。发卖列表中的总额包括了每次出卖的现金数额,这些数额以浮点型数据呈现。
表B中的getProducts()办法毗连了两个数据库,并把一切的产物称号保留在数组中,我设置以下的数据库划定规矩:
ProductID在产物列表中最共同,也是最关头;
ProductID关于第一个纪录的值为0;
一切以后的一连的纪录都是累加的,以是第二个纪录的productID为1,第三个纪录的productID为2,以此类推。
这些数据库划定规矩同意在product数组中存储数据,以下所示:
arr[rs.getInt("productID")]=rs.getString("productname");
一些数据库办理体系在缺省情形下就同意数据的主动累加大概主动排序。当你在计划数据库时,必定先查明你的数据库办理体系遵守哪些划定规矩,好比主动累加,主动排序等。

猎取总额发卖量

在多半情形下,发卖列表中会有良多个纪录,以是会见数据库的快速性和高效性显得十分主要。如今我们只必要会见数据库中每种产物的总额发卖量。
表C中的getSales()办法与数据库毗连并前往一个数组,这个数组包括每种产物的总额出卖量。当getSales()遍历一切的纪录后,它只存储的是每种产物新的出卖量:
intproduct=rs.getInt("productID");
arr[product]+=rs.getFloat("amount");
pieColor对象
饼状图形上的每种产物应当以分歧的色彩显现。为了到达这一目标,我们创建一个pieColor对象(如表D)所示,这一对象包括有关色彩的数组:
ColorpieColorArray[]={newColor(210,60,60),newColor(60,210,60)…}
pieColor类界说了一个setNewColor()的办法,这一办法可以使curPieColor和索引递增,同时它能够反省索引不要凌驾界限局限,即接纳的办法是:假如curPieColor过年夜即赋0值。
更无效的是,setNewColor()轮回每种色彩后,并在第一种色彩下实行以下的代码:
curPieColor++;
if(curPieColor>=pieColorArray.length)
{curPieColor=0;}
RenderingHints和antialiasing类
java.awt.RenderingHints类界说了良多办法以显现二维图形,包含alpha_interpolation,发抖,和antialiasing办法。RenderingHints有助于决意图形怎样显现和图形怎样到达最好处置。
为了能以光滑显现,可使用antialiasing办法来处置饼状图形。Antialiasing是一种图形的光滑处置办法。其算法是选择一个特别象素的色彩值并代替交织处的象素,从而可以使线条交织处失掉光滑化。
图A申明了antialiasing办法的效果。能够看出利用antialiasing办法的饼状图形的线条交织处变得很光滑。
图A
JAVA教程之轻松利用JSP天生饼图
登录/注册后可看大图

<br>
同时,还能够创建一个RenderingHints对象,并传送到Graphics2DsetRenderingHints()办法,以下所示:
RenderingHintsrenderHints=newRenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHints(renderHints);
制做可调剂的界限

图A中的饼状图形有一界限,怎样能改动界限的巨细呢?能够先界说intborder=10,然后盘算界限内面积的巨细而完成:
Ellipse2D.Doubleelb=newEllipse2D.Double(x_pie-border/2,y_pie-border/2,pieWidth+border,pieHeight+border);
x_pie和y_pie的值代表着包抄在饼状图形的正方形的左上角。我们经由过程界限面积取一半(border/2)而失掉饼状图形的中央。
圆弧(Arc)实际
从java.awt.Graphics类承继而来的fillArc()办法供应了绘制饼状图形各个部分(或圆弧)的复杂办法:
g2d.fillArc(x_position,y_position,width,height,startAngle,sweepAngle);
x_position,和y_position整数代表着要添补的圆弧的左上角的x,y的坐标,width和heigh整数代表其详细的尺寸。假如width和height的值相称,饼状图形将是一个圆。假如width和height不相称,那末饼状图形将是一个椭圆。
fillArc()办法决意基于sweepAngle整数值的圆弧的巨细。假如sweepAngle值是正的,则圆弧是以反时针偏向绘制,反之以顺时针绘制。
绘制圆弧
第一步,利用pieColor对象的getPieColor()办法猎取比来饼状圆弧的色彩,并把它付与以后的圆弧::
g2d.setColor(pc.getPieColor());
接着,经由过程不休轮回sales[]数组并使其累加而取得统共的发卖量:
salesTotal+=sales;
利用统共发卖量,能够盘算出每种产物发卖情形占统共发卖量的百份量:
floatperc=(sales/salesTotal);
我们盘算sweepAngle便可给圆弧的每部分分派度数:
intsweepAngle=(int)(perc*360);
每部分圆弧画完以后,startAngle便可依据以后的sweepAngle递增。这就确保以后的圆弧部分都是以上一圆弧为入手下手,从而创建一个完全的饼状图形。
显现图标
图标供应了显现饼状图形中各个部分最简便的体例。一个图标的巨细应当与饼状图形中的占据量绝对应。
图B显现了一个完全饼状图形及其对应各个部分的图标,包含产物称号、发卖总量、和各个部分的占据量。
图B

<br>
总结
这一文章报告了怎样使用JSP绘制饼状图形的办法及算法,这些办法及算法复杂而有用,开辟职员能够充实天时用这些办法。



windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的
作者: 老尸    时间: 2015-1-21 11:43
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 若相依    时间: 2015-2-4 13:44
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: 若天明    时间: 2015-2-7 14:15
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者: 柔情似水    时间: 2015-2-22 04:38
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 只想知道    时间: 2015-3-6 23:05
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: admin    时间: 2015-3-8 17:59
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 不帅    时间: 2015-3-15 10:32
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 再现理想    时间: 2015-3-22 00:09
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: 蒙在股里    时间: 2015-3-27 10:12
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 仓酷云    时间: 2015-3-31 09:54
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 变相怪杰    时间: 2015-4-1 12:32
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者: 小妖女    时间: 2015-4-1 23:53
是一种突破用户端机器环境和CPU
作者: 第二个灵魂    时间: 2015-4-6 01:11
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 因胸联盟    时间: 2015-4-21 18:13
是一种突破用户端机器环境和CPU
作者: 乐观    时间: 2015-4-21 19:57
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者: 小魔女    时间: 2015-5-9 21:52
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: 谁可相欹    时间: 2015-6-29 05:18
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者: 冷月葬花魂    时间: 2015-7-3 17:23
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2