How to create a pie chart in Java

I want to create a pie chart showing percentages. How to create a pie chart using JFrame in Java?

This is what I have so far:

import javax.swing.*; import java.awt.*; import java.util.*; public class PieChart extends JFrame{ private int Midterm; private int Quizzes; private int Projects; private int Final; public PieChart(){ setPercentage(); } private void setPercentage() { // TODO Auto-generated method stub } //construct a pie chart with percentages public PieChart(int Midterm, int Quizzes, int Final, int Projects){ this.Midterm = Midterm; this.Quizzes = Quizzes; this.Final = Final; this.Projects = Projects; } //return midterm public int getMidterm(){ return Midterm; } //public void setMidterm(int Midterm){ //this.Midterm = Midterm; //repaint(); //} //return Quizzes public int getQuizzes(){ return Quizzes; } public int Final(){ return Final; } public int Projects(){ return Projects; } //draw the circle protected void paintComponent(Graphics g){ super.paintComponents(g); } //initialize circle parameters int circleRadius = (int)(Math.min(getWidth(),getHeight())* 0.4); int xCenter= getWidth()/2; int yCenter = getHeight()/2; } 
+2
source share
3 answers

Do you need to develop it yourself? Or can you use the open source API? Maybe JFreeChart has something you can use.

+1
source

to draw a pie chart you should use fillArc (x, y, width, height, start angle, arc angle)

draw different arcs connected to each other (the 1st left arc should be the same as the right side of the previous arc)

you need to make your own logic to set the starting angle ...

like

suppose u has only 12 products and you want to draw a pie chart for them (sale)

total 12 product sales = 1200

sale of individual products a = 120, b = 0, c = 500, .....

angle for an individual product a = (120 * 360) / 1200 b = 0 c = (500 * 360) /

and then set the relative angle of the arc

I think this will give you a pie chart

+1
source

The paintComponent method passes a Graphics object. In doing so, you can use fillArc to draw various fragments and drawString to mark them.

Also, I would suggest that you do not draw directly on the JFrame, but instead do it on the JComponent, which you then add to the JFrame.

0
source

All Articles