显示一个饼图

编写程序,使用饼图显示作业、平时测验、期中考试和期末考试占总成绩的百分比,如下图所示。假设作业占 20%用红色显示,平时测验占 10%用蓝色显示,期中考试占 30%用绿色显示,期末考试占 40%用白色显示。

显示一个饼图


import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class Test3 extends JFrame{
public Test3(){
add(new Panel1());
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Test3 frame = new Test3();
frame.setSize(250, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

}




class Panel1 extends JPanel{

protected void  paintComponent(Graphics g){
super.paintComponent(g);

int xCenter = getWidth()/2;
int yCenter = getHeight()/2;
int radius = (int)(Math.min(getWidth(), getHeight())*0.4);

int x = xCenter - radius;
int y = yCenter - radius;

g.setColor(Color.RED);
g.fillArc(x, y, 2*radius, 2*radius, 0, 72);
g.setColor(Color.BLUE);
g.fillArc(x, y, 2*radius, 2*radius, 72, 36);
g.setColor(Color.GREEN);
g.fillArc(x, y, 2*radius, 2*radius, 108, 108);
g.setColor(Color.WHITE);
g.fillArc(x, y, 2*radius, 2*radius, 216, 144);

g.setColor(Color.BLACK);
g.drawString("Quizzes --10%", (int)(xCenter + radius * Math.cos(2 * Math.PI * 0.25)), (int)(yCenter - radius * Math.sin(2 * Math.PI * 0.25)));
g.drawString("Final --40%", (int)(xCenter + radius*Math.cos(2 * Math.PI * 0.8)), (int)(yCenter - radius*Math.sin(2 * Math.PI * 0.8)));
g.drawString("Projects --20%", (int)(xCenter + radius*Math.cos(2 * Math.PI * 0.1)),  (int)(yCenter - radius*Math.sin(2 * Math.PI * 0.1)));
g.drawString("Midterms --30%",  (int)(xCenter + radius*Math.cos(2 * Math.PI * 0.45)), (int)(yCenter - radius*Math.sin(2 * Math.PI * 0.45)));
}
}