在网上很难找到做报表用的各种用图。下面是我最近的新作。一点点小东西, 与大家分享,如果有什么问题请发信到[email protected]
applet 原码,用jcreator打开即可。
import java.awt.*; import java.applet.*; import java.awt.geom.*; import java.lang.*; import java.text.*;
public class Caky extends Applet { private int i,dataApp[],n[]; private int angle=0; private double dataAll,data[],dataArc[],x[];
//设置一组显示饼块颜色的值; static Color color[]={Color.orange,Color.blue,Color.cyan,Color.DARK_GRAY,Color.GRAY,Color.green,Color.magenta}; private Arc2D.Float arc2d;
public Caky(){} public void init() { data=new double[7]; dataArc=new double[7]; dataApp=new int[7]; n=new int[7]; x=new double[7];
//用于显示的值; data[0]=100; data[1]=60; data[2]=80; data[3]=120; data[4]=180; data[5]=110; data[6]=210;
//求总的值; while(i<7) { dataAll+=data[i++]; }
//求得每个饼块的度数; for(i=0;i<7;i++) { dataArc[i]=data[i]*360/dataAll; }
//简单的精度计算; for(i=0;i<7;i++) { x[i]=data[i]*100/dataAll; n[i]=(int)(data[i]*100/dataAll);
if((x[i]-n[i])>0.5) { n[i]=n[i]+1; } }
//设置每个饼块递增的次序和大小;
dataApp[0]=0; dataApp[1]=(int)dataArc[0]; dataApp[2]=(int)dataArc[0]+(int)dataArc[1]; dataApp[3]=(int)dataArc[0]+(int)dataArc[1]+(int)dataArc[2]; dataApp[4]=(int)dataArc[0]+(int)dataArc[1]+(int)dataArc[2]+(int)dataArc[3]; dataApp[5]=(int)dataArc[0]+(int)dataArc[1]+(int)dataArc[2]+(int)dataArc[3]+(int)dataArc[4]; dataApp[6]=(int)dataArc[0]+(int)dataArc[1]+(int)dataArc[2]+(int)dataArc[3]+(int)dataArc[4]+(int)dataArc[5];
}
public void paint(Graphics g) {
//显示标题; g.setColor(Color.black); Font f1=new Font("Verdana",Font.BOLD,25); g.setFont(f1); g.drawString("the product of the last year",120,20); Font f2=new Font("Verdana",Font.BOLD,10); g.setFont(f2);
for(int i=0;i<7;i++) { g.setColor(color[i]); g.fillArc(200,100,200,200,dataApp[i],(int)dataArc[i]); if(i==6) { g.fillArc(200,100,200,200,dataApp[i],360-dataApp[6]); }
// 显示x轴的数值; g.fillRect(40+i*80,360,30,17); g.drawString("¡Ö"+n[i]+"%",40+i*80+35,375);
}
//重画饼图的外圆 while(true) { g.setColor(Color.ORANGE); g.drawLine((int)(200+100+100* Math.cos(angle*Math.PI/180)), (int)(100+100+100* Math.sin(angle*Math.PI/180)), (int)(200+100+100* Math.cos(angle*Math.PI/180)), (int)(100+100+100* Math.sin(angle*Math.PI/180))); angle++;
if (angle>360) { angle=angle%360; } } } }
html 代码如下:
<html> <head> <title>caky</title> </head> <body> <applet code=Caky.class width=600 height=600 > </applet> </body> </html>

|