欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

一个简单的绘制饼图的 Java Bean 实例,,package com.

来源: javaer 分享于  点击 8913 次 点评:173

一个简单的绘制饼图的 Java Bean 实例,,package com.


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://byrx.net
相关栏目:

用户点评