- package com.darwinsys.charts;
- import java.awt.*;
- /**
- * Simple charting bean. This version just draws a Pie Chart.
- *
- * It doesn't even label the pie slices; that is left as a
- * (non-trivial) exercise for the reader. Please read the
- * Technical Report "How Hard can it be to draw Pie Charts?" by Chris
- * van Wyck, Purdue/Bell Labs, 1989??, before you decide how easy
- * the work is going to be!
- */
- public class ChartBean extends Component {
- /** The title to print on the chart */
- protected String title;
- /** the data to draw */
- protected ChartData data[];
- /** degrees in a circle */
- public static final int CIRCLE = 360;
- /** a set of colors to draw the pies in */
- protected Color[] colors = {
- Color.red,
- Color.blue,
- Color.green,
- Color.pink,
- Color.orange
- };
- /** Construct a ChartBean with a title */
- public ChartBean(String s) {
- title = s;
- setBackground(Color.white);
- }
- /** Construct a ChartBean with no title (no-arg constructor
- * required for Beans).
- */
- public ChartBean() {
- this(null);
- }
- public void setLabel(String s) {
- title = s;
- }
- public String getLabel() {
- return title;
- }
- public void setData(ChartData[] newStuff) {
- data = newStuff;
- repaint();
- }
- public void paint(Graphics g) {
- Dimension sz = getSize();
- int w = sz.width, h = sz.width;
- if (title != null)
- g.drawString(title, w/10, (int)(h*.9));
- if (data == null || data.length == 0) {
- g.drawOval(0, 0, w, h);
- g.drawString("Please provide some data!", w/10, h/2);
- return;
- }
- int total = 0;
- int angle = 0;
- int rad = 0; // "radians" (actually degrees) to draw
- int colNum = 0;
- for (int i=0; i<data.length; i++)
- total += data[i].value;
- for (int i=0; i<data.length; i++) {
- rad = (int)(CIRCLE * ((float)data[i].value / (float)total));
- // System.out.println("data: "+data[i].name+";"+data[i].value+
- // ",rad="+rad);
- g.setColor(colors[colNum++]);
- colNum%=colors.length; // keep it in bounds
- g.fillArc(0, 0, w, h, angle, rad);
- angle += rad;
- }
- }
- public Dimension getMinimumSize() {
- return new Dimension(100, 120);
- }
- public Dimension getPreferredSize() {
- return new Dimension(200, 240);
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/23112012622.html
来源: http://www.codesnippet.cn/detail/23112012622.html