Как создать круговую диаграмму в Java

Я хочу создать круговую диаграмму, отображающую проценты. Как создать круговую диаграмму с помощью 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;

}

person JavaDummy    schedule 22.09.2010    source источник
comment
Может быть, вы могли бы перефразировать это как вопрос.   -  person SorcyCat    schedule 22.09.2010
comment
Каков ваш план для этого? что ты уже испробовал? Где вы столкнулись с проблемами?   -  person Peter Ajtai    schedule 22.09.2010
comment
Думаю, мне нужно сделать тестовую диаграмму, чтобы запустить ее.   -  person JavaDummy    schedule 23.09.2010
comment
Вы слишком усердствуете с закрытием. ОП пытался улучшить вопрос.   -  person Kirk Woll    schedule 23.09.2010
comment
хорошо, так что я не могу получить любую помощь сейчас? не хочу ответа, просто точка в правильном направлении   -  person JavaDummy    schedule 23.09.2010
comment
@JavaD: два человека попросили повторно открыть этот вопрос. Если то же самое сделают еще три человека, ответы на этот вопрос будут снова разрешены.   -  person Michael Petrotta    schedule 23.09.2010
comment
повторно открыт, не лучший вопрос, но его можно было бы сделать стоящим с некоторым редактированием   -  person Cruachan    schedule 23.09.2010


Ответы (3)


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

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

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

нравится

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

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

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

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

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

Я думаю, что это даст вам вашу круговую диаграмму

person shounak    schedule 05.06.2012

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

person Tim Bender    schedule 22.09.2010
comment
да, я должен разработать его самостоятельно. Я нашел другой код, и он работает для меня. Я не знаю, как отображать проценты, хотя. - person JavaDummy; 23.09.2010

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

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

person lins314159    schedule 22.09.2010