动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Java核心代码例程之:RMIClient..
..net 的 MSMQ 异步调用全过程分析.
.按位“异或”赋值运算符 (^=).
.详细说明 MIDP 中的属性问题.
.JAVA中jar文件的编写和应用.
.设计自己的DbUnit.
.Java小程序源文件的组成.
.如何在 Linux 下搭建 Web 应用环.
.Java Socket编程(二).
.软件项目开发之 软件过程RUP初探.
.JDBC介绍.
.J2EE综合 svn配置手记.
.关于Java Servlet编程应用基础分.
.Java入门笔记4_访问控制和包.
.Java语言语法-控制结构.
.Jive笔记--DatabasePackage下面的.
.网友杂谈各种appServer.
.用JAVA做数字签名.
.native2ascii命令的一种用法!.
.关于refactoring思考.

一个关于JAVA绘制仿真立体饼图的程序源码,供大家参考

发表日期:2008-1-5 |



  下面程序是一个APPLET,有爱好的朋友可以将其改为BEAN,
/程序名称:饼形图
//程序类型:Java APPLET
//文件类型:模板文件,由Html驱动,数据为模拟数据
//原文件名:CakeChart.java
//程序版本:1.5
//程序设计人:杨勇
//更新日期:2003-3-13
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.math.*;
import java.util.*;
import java.awt.geom.Arc2D;
import java.awt.geom.*;
import java.awt.Polygon;
import java.util.Date;
import java.applet.*;

public class CakeChart extends Applet
{
//初始数据
private double data[]={100.,50,113.,127.,299.234,120.,93.,123.,127.,199.,157.,189.};
private String percent[]=new String[data.length]; //每个数据所占百分比
private int radian[]=new int[data.length]; //每个数据所对应的弧度数
private double max,min;
//初始化每块饼的颜色
private int dia=240;//设置饼图透明度
private Color c1=new Color(0,255,0,dia);
private Color c2=new Color(255,255,0,dia);
private Color c3=new Color(255,0,0,dia);
private Color c4=new Color(255,128,64,dia);
private Color c5=new Color(255,128,255,dia);
private Color c6=new Color(255,0,128,dia);
private Color c7=new Color(233,124,24,dia);
private Color c8=new Color(204,119,115,dia);
private Color c9=new Color(89,159,230,dia);
private Color c10=new Color(148,140,179,dia);
private Color c11=new Color(128,0,64,dia);
private Color c12=new Color(174,197,208,dia);
private Color colors[]={c1,c2,c3,c12,c11,c6,c4,c8,c9,c10,c5,c7};
//统计图的宽度和高度
private int width=600;
private int height=400;
//定义标题起始坐标变量
private int titleStart_x;
private int titleStart_y;
//定义圆心坐标
private int oval_x=60;
private int oval_y=90;
//定义椭圆的长轴和短轴
private int long_axes=280;
private int short_axes=200;
//定义图例区域起点坐标
private int cutlineRect_x=70;
private int cutlineRect_y=450;
//定义图倒区域矩形的宽度和高度
private int cutlineRect_width=100;
private int cutlineRect_heigth=235;
//定义日期变量
private Date date=new Date();
//定义统计图其他显示信息的超始坐标
private int otherInfo_x1;
private int otherInfo_y1;
private int otherInfo_x2;
private int otherInfo_y2;
private int otherInfo_x3;
private int otherInfo_y3;
//定义标题XY轴信息
private String title="服务器流量统计 (饼形统计图) ";
private String otherInfo1="西南师范大学网络教育学院";
private String otherInfo2="www.eduwest.com";
private String otherInfo3="绘图日期:";
//双缓冲设置
private Image offScreenImage =null;
private Graphics offScreenBuffer =null;

public CakeChart()
{
}
public void init()
{
offScreenImage=this.createImage(width,height);
offScreenBuffer=offScreenImage.getGraphics();
NumberBudget();
CoorBudget();
}

public void NumberBudget()
{

//求数据中的最大值和最小值
max=data[0];
min=data[0];
for(int mm=0;mm<data.length;mm++)
{
if(data[mm]>max)
max=data[mm];
if(data[mm]<min)
min=data[mm];
}
//对数据进行求和运算
float allData_sum=0;
for(int s=0;s<data.length;s++)
{
allData_sum+=data[s];
}
//计算每个数据占总数的百分比
for(int p=0;p<data.length;p++)
{
percent[p]=String.valueOf(Math.round(data[p]/allData_sum*100))+"%";
}

//计算每个数据所对应的弧度数
for(int r=0;r<data.length;r++)
{
radian[r]=Math.round((float)data[r]/allData_sum*360);
}
}

public void CoorBudget()
{
//预算标题信息的起始坐标
titleStart_x=22;
titleStart_y=(width/2)-(title.length()*15/2);
//初始化统计图其他显示信息的起始坐标(位置固定)
otherInfo_x1=390;
otherInfo_y1=450;
otherInfo_x2=400;
otherInfo_y2=480;
otherInfo_x3=390;
otherInfo_y3=5;
}

public void update(Graphics g)
{
paint(g);
}

public void paint(Graphics g)
{
PaintBackground(offScreenBuffer);
PaintChart(offScreenBuffer);
g.drawImage(offScreenImage,0,0,this);
}

public void PaintBackground(Graphics g)
{
//渐变背景初始颜色
Color BackStartColor=Color.white;
Color BackLastColor=new Color(162,189,230);
Color titleColor=Color.black;
Color otherInfoColor=new Color(41,78,118);
//标题背景颜色
Color titleBackColor=new Color(147,179,225);
//统计图中心区域颜色
Color cutlineColor=new Color(0,128,255,50);
//图例数据颜色
Color cutDataColor=Color.white;

Font titleFont=new Font("黑体",Font.BOLD,18);
Font otherFont=new Font("宋体",Font.PLAIN,12);
String year="";
String month="";
String day="";
Graphics2D g2=(Graphics2D)g;
RenderingHints hints = new RenderingHints(null);
hints.put(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHints(hints);

GradientPaint gradient=new GradientPaint(0,0,BackStartColor,0,400,BackLastColor,false);
g2.setPaint(gradient);
Rectangle2D rect=new Rectangle2D.Double(0,0,width,height);
g2.fill(rect);
//绘制标题背景
g2.setColor(titleBackColor);
g2.fill3DRect(0,0,width,30,true);
//绘制图例区域背景
g2.setColor(cutlineColor);
g2.fillRect(cutlineRect_y,cutlineRect_x,cutlineRect_width,cutlineRect_heigth);
g2.setColor(Color.white);
g2.drawRect(cutlineRect_y,cutlineRect_x,cutlineRect_width,cutlineRect_heigth);
//绘制统计图标题
g2.setFont(titleFont);
g2.setColor(titleColor);
g2.drawString(title,titleStart_y,titleStart_x);
//显示统计图其它信息
g2.setFont(otherFont);
g2.setColor(otherInfoColor);
g2.drawString(otherInfo1,otherInfo_y1,otherInfo_x1);
g2.drawString(otherInfo2,otherInfo_y2,otherInfo_x2);
g2.drawString(otherInfo3,otherInfo_y3,otherInfo_x3);
//显示绘制日期
year=Integer.toString(1900+date.getYear());
month=Integer.toString(date.getMonth()+1);
day=Integer.toString(date.getDate());
g2.drawString(year+"年"+month+"月"+day+"日",otherInfo_y3+60,otherInfo_x3);
//显示数据百分比
int colorRectWH=15;
int space=5; //图例中小色块之间的间隔距离
int addData=cutlineRect_x;
for(int i=0;i<data.length;i++)
{
g2.setColor(colors[i]);
g2.fill3DRect(cutlineRect_y,addData,colorRectWH,colorRectWH,true);
if(data[i]==max data[i]==min)
g2.setColor(Color.red);
else
g2.setColor(cutDataColor);
g2.drawString(String.valueOf(data[i])+" ("+percent[i]+")",cutlineRect_y+20,addData+colorRectWH-space);
addData+=colorRectWH+space;
}
}

public void PaintChart(Graphics g)
{
int start=0;
int rVal=192;
int gVal=192;
int bVal=192;
int frameCount=60;
Graphics2D g2=(Graphics2D)g;
RenderingHints hints = new RenderingHints(null);
hints.put(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHints(hints);

for(int t=20;t>=0;t--)
{
rVal=t*255/frameCount;
gVal=t*255/frameCount;
bVal=t*255/frameCount;
g2.setColor(new Color(rVal,gVal,bVal,50));
g2.drawOval(oval_x,oval_y+t,long_axes,short_axes);
}
for(int a=0;a<data.length;a++)
{
Arc2D arc = new Arc2D.Float(Arc2D.PIE);
g2.setColor(colors[a]);
arc.setFrame(oval_x,oval_y,long_axes,short_axes);
arc.setAngleStart(start);
arc.setAngleExtent(radian[a]);
g2.fill(arc);
if(data[a]==max data[a]==min)
g2.setColor(Color.white);
else
g2.setColor(new Color(223,223,223,150));
g2.draw(arc);
start+=radian[a];
}

}
HTML程序:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="KeyWords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<APPLET CODE="CakeChart.class" WIDTH="600" HEIGHT="400">
</APPLET>
</BODY>
</HTML>

==============================
说明:
必须将HTML和CLASS放在一个目录里,必须安装JRE(1.4及以上版本).
==============================
国外也有类似API包,有免费的也有收费的,
比如:http://www.visualmining.com(商业的,不过可以学习其系统架构,很不错)
http://www.jfree.org/(免费的,不过API文档要收费)
--------------------------------
希望对大家有所帮助,也希望大家指出程序中的不足,谢谢!
上一篇:一个关于过程原码 人气:511
下一篇:一个连接池的例子(来自JIVE) 人气:475
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 HDWiki v4.0.1 bulid 081007 UTF
2008-10-7 迅易评选投票管理系统 v10.0
2008-10-7 HDWiki v4.0.1 bulid 081007 GBK
2008-10-7 Bitrac单用户博客 v1.14 bulid 0
2008-10-7 OpenX(广告管理系统) v2.6.2 多国
2008-10-7 乐铺网店系统免费普及版 v3.41
2008-9-29 酷狗音乐(原KuGoo)2008 v5.310 正
2008-9-29 QQTab 1.1
2008-9-29 网络传送带 Net Transport 2.64a
2008-9-29 谷歌金山词霸v1.8
2008-9-29 TweakVI 1.0 Build 1090
2008-9-29 ACDSee Pro 2.5 Build 333 汉化绿
2008-9-29 Winamp v5.541(2189) 周明波简体
2008-9-27 CCleaner 2.12.651
2008-9-27 Mozilla Thunderbird 2.0.0.17 英
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号