Как мне создать круговую диаграмму в Java - PullRequest
2 голосов
/ 22 сентября 2010

Я хочу создать круговую диаграмму, которая отображает проценты. Как мне создать круговую диаграмму, используя JFrame в Java?

Это то, что я имею до сих пор:

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;

}

Ответы [ 3 ]

2 голосов
/ 05 июня 2012

для рисования круговой диаграммы вы должны использовать fillArc (x, y, ширина, высота, начальный угол, угол дуги)

рисует различные дуги, связанные друг с другом (1-й, т.е. левая боковая дуга должна совпадать с правой стороной предыдущей дуги)

Вы должны создать свою собственную логику для установки начального угла ...

как

предположим, у вас всего 12 товаров и вы хотите нарисовать для них круговую диаграмму (продажа)

Всего 12 продажи товара = 1200

продажа отдельного товара a = 120, b = 0, c = 500, .....

угол для отдельного продукта a = (120 * 360) / 1200 b = 0 c = (500 * 360) /

и затем установить относительный угол дуги

Думаю, это даст вам круговую диаграмму

1 голос
/ 23 сентября 2010

Вы должны разработать его самостоятельно?Или вы можете использовать API с открытым исходным кодом?Возможно JFreeChart есть что-то, что вы можете использовать.

0 голосов
/ 23 сентября 2010

В методе paintComponent передается объект Graphics . При этом вы можете использовать fillArc для рисования различных срезов и drawString для их маркировки.

Кроме того, я бы предложил, чтобы вы не рисовали непосредственно на JFrame, а вместо этого делали это на JComponent, который затем добавляли в JFrame.

...