2

我想创建一个显示百分比的饼图。如何在 Java 中使用 JFrame 创建饼图?

这是我到目前为止所拥有的:

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;

}
4

3 回答 3

2

要绘制饼图,您应该使用 fillArc(x,y,width,height,starting angle,arc angle)

绘制彼此相关的不同弧(第一个即左侧弧必须与前一个弧的右侧相同)

您必须制定自己的逻辑来设置起始角度...

喜欢

假设您总共有 12 种产品,并且您想为它们绘制饼图(销售)

总共 12 个产品的销售额 = 1200

单个产品销售 a = 120, b = 0, c = 500,.....

单个产品的角度 a = (120*360)/1200 b = 0 c = (500*360)/

然后设置相对弧角

我想这会给你你的饼图

于 2012-06-05T03:20:40.547 回答
1

一定要自己开发吗?或者你可以使用开源 API 吗?也许JFreeChart有一些你可以使用的东西。

于 2010-09-22T20:22:45.353 回答
0

在该paintComponent方法中,传入了一个Graphics对象。有了它,您可以使用它fillArc来绘制各种切片并drawString标记它们。

另外,我建议您不要直接在 JFrame 上绘制,而是在 JComponent 上绘制,然后将其添加到 JFrame。

于 2010-09-22T23:58:54.923 回答