繁体中文
设为首页
加入收藏
当前位置:JSP技术首页 >> 资料/其它 >> - Draw a pie chart

- Draw a pie chart

2005-01-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:import java.util.*; import java.awt.*; import java.applet.Applet; public class Graph extends Applet { int depth, radius; public void init() { float value; String at = getParameter("width"); rad...
关键字:chart Draw pie

import java.util.*;

import java.awt.*;

import java.applet.Applet;

public class Graph extends Applet {

int depth, radius;

public void init() {

float value;

String at = getParameter("width");

radius = (at != null) ? Integer.valueOf(at).intValue() : 100;

at = getParameter("depth");

depth = (at != null) ? Integer.valueOf(at).intValue() : 20;

at = getParameter("values");

PieChartCanvas c = new PieChartCanvas(radius, depth);

setLayout(new BorderLayout());

// Create Hashtable to map color name (String) to Color type

Hashtable colors = new Hashtable();

colors.put("green", Color.green);

colors.put("red", Color.red);

colors.put("blue", Color.blue);

colors.put("yellow", Color.yellow);

colors.put("magenta", Color.magenta);

colors.put("cyan", Color.cyan);

colors.put("orange", Color.orange);

colors.put("pink", Color.pink);

colors.put("white", Color.white);

colors.put("black", Color.black);

// "value-color,value-color,..."

StringTokenizer t = new StringTokenizer(at, ",");

String s;

int i;

while (t.hasMoreTokens()) {

s = t.nextToken();

i = s.indexOf('-');

value = Float.valueOf(s.substring(0, i)).floatValue();

c.addSlice(value, (Color)colors.get(s.substring(i + 1)));

}

resize(c.getMinimumSize().width, c.getMinimumSize().height);

add("Center", c);

}

}

class PieChartCanvas extends Canvas {

/*

** author Ciaran Treanor ciaran@broadcom.ie

*/

final double aspectFudge = 2.5;

int radius, depth, called = 1, numSlices = 0;

float total = 0, value[] = new float[10];

Color color[] = new Color[10];

Graphics offGraphics;

Image gfxBuff;

public PieChartCanvas(int radius, int depth) {

this.value = value;

this.color = color;

this.radius = radius;

this.depth = depth;

}

public void paint(Graphics g) {

int startAngle;

float angle;

Dimension d = getSize();

if(gfxBuff == null) {

gfxBuff = createImage(d.width, d.height);

offGraphics = gfxBuff.getGraphics();

offGraphics.setColor(getBackground());

offGraphics.fillRect(0, 0, d.width, d.height);

}

// do the 3d effect

for(int x = depth; x >= 1; x--) {

startAngle = -45;

for(int i = 0; i < numSlices; i++) {

offGraphics.setColor(color[i].darker());

angle = Math.round(360 * (value[i] / total));

offGraphics.fillArc(0, x, radius, (int)(radius / aspectFudge),

startAngle, (int)angle);

startAngle += angle;

}

}

// draw the pie slice

startAngle = -45;

for(int i = 0; i < numSlices; i++) {

offGraphics.setColor(color[i]);

angle = Math.round(360 * (value[i] / total));

offGraphics.fillArc(0, 0, radius, (int)(radius / aspectFudge),

startAngle, (int)angle);

startAngle += angle;

}

g.drawImage(gfxBuff, 0, 0, null);

}

public void addSlice(float value, Color color) {

this.value[numSlices] = value;

this.color[numSlices++] = color;

total += value;

}

public Dimension getPreferredSize() {

return getMinimumSize();

}

public Dimension getMinimumSize() {

return new Dimension(radius, (int)((radius / aspectFudge) + depth));

}

}

[JavaPie.hmtl]

责任编辑:admin
相关文章