Web | This Site

Java Basics Examples
Java Tutorial
Java Useful Resources
Selected Reading
© 2011 TutorialsPoint.COM

| Home |  | References |  | Discussion Forums |  | About TP

# Java Examples - Display a pie chart.

## Problem Description:

How to display a pie chart using a frame?

## Solution:

Following example displays how to a display a piechart by making Slices class & creating arc depending on the slices.

    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Rectangle;

    import javax.swing.JComponent;
    import javax.swing.JFrame;

    class Slice {
       double value;
       Color color;
       public Slice(double value, Color color) {
          this.value = value;
          this.color = color;
       }
    }
    class MyComponent extends JComponent {
       Slice[] slices = { new Slice(5, Color.black),
       new Slice(33, Color.green),
       new Slice(20, Color.yellow), new Slice(15, Color.red) };
       MyComponent() {}
       public void paint(Graphics g) {
          drawPie((Graphics2D) g, getBounds(), slices);
       }
       void drawPie(Graphics2D g, Rectangle area, Slice[] slices) {
          double total = 0.0D;
          for (int i = 0; i < slices.length; i++) {
             total += slices[i].value;
          }
          double curValue = 0.0D;
          int startAngle = 0;
          for (int i = 0; i < slices.length; i++) {
             startAngle = (int) (curValue * 360 / total);
             int arcAngle = (int) (slices[i].value * 360 / total);
             g.setColor(slices[i].color);
             g.fillArc(area.x, area.y, area.width, area.height,
             startAngle, arcAngle);
             curValue += slices[i].value;
          }
       }
    }
    public class Main {
       public static void main(String[] argv) {
          JFrame frame = new JFrame();
          frame.getContentPane().add(new MyComponent());
          frame.setSize(300, 200);
          frame.setVisible(true);
       }
    }

## Result:

The above code sample will produce the following result.

    Displays a piechart in a frame.

Advertisement

Online Image Processing

Indian Baby Names