使用Graphics+Canvas制作饼状图
事先声明:博主正在学习Java,故水平有限,文中若有疏漏或错误,恳请同行批评指正!
1、导入java.awt.*和javax.swing.JFrame
import java.awt.*;
import javax.swing.JFrame;
2、构建一个JFrame的子类,并重写构造方法
public class PieChart extends JFrame{
PieChart(){
setSize(400, 400);/*大小*/
setTitle("Corlor Pie Chart");/*设置标题*/
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);/*窗体可见*/
myCanvas mc = new myCanvas();/*实例化一个画布对象*/
add(mc);/*将实例化的画布对象添加到窗体中*/
}
public static void main(String[] args) {
new PieChart();
}
}
3、构建Canvas子类,并重写构造方法
上述在窗体中加入了画布对象,故需要构建一个Canvas子类,并重写构造方法。(个人喜欢这种方式,通过Canvas myCanvas = new Canvas()来实例化画布对象myCanvas也是可以的。)
class myCanvas extends Canvas{
myCanvas(){
setSize(400, 400);
}
public void paint(Graphics e){
e.setColor(Color.green);/*设置画笔颜色 通过setColor(Color.color)方法设置*/
e.fillArc(100, 100, 200, 200, 30, 60);
e.setColor(new Color(0, 210, 255));/*通过构造方法new Color(red, green, blue)构造方法设置画笔颜色*/
e.fillArc(100, 100, 200, 200, 90, 120);
e.setColor(Color.red);
e.fillArc(100, 100, 200, 200, 210, 80);
e.setColor(Color.yellow);
e.fillArc(100, 100, 200, 200, 290, 100);
e.setColor(Color.black);
e.drawString("全民最受喜爱的阅读APP调查", 120, 40);
e.drawString("33.3%", 140, 180);
e.drawString("16.6%", 220, 150);
e.drawString("22.2%", 165, 260);
e.drawString("22.2%", 240, 215);
e.drawString("起点中文网", 70, 115);
e.drawString("潇湘书院", 240, 95);
e.drawString("小说阅读网", 120, 320);
e.drawString("红袖添香", 310, 210);
}
}
需要说明的是,Canvas继承了Component类的paint()方法,paint()方法的参数是抽象类Graphics对象。主类中的main()方法会自行调用paint()方法,故无需显性调用。
4、完整代码
import java.awt.*;
import javax.swing.JFrame;
class myCanvas extends Canvas{
myCanvas(){
setSize(400, 400);
}
public void paint(Graphics e){
e.setColor(Color.green);/*设置画笔颜色 通过setColor(Color.color)方法设置*/
e.fillArc(100, 100, 200, 200, 30, 60);
e.setColor(new Color(0, 210, 255));/*通过构造方法new Color(red, green, blue)构造方法设置画笔颜色*/
e.fillArc(100, 100, 200, 200, 90, 120);
e.setColor(Color.red);
e.fillArc(100, 100, 200, 200, 210, 80);
e.setColor(Color.yellow);
e.fillArc(100, 100, 200, 200, 290, 100);
e.setColor(Color.black);
e.drawString("全民最受喜爱的阅读APP调查", 120, 40);
e.drawString("33.3%", 140, 180);
e.drawString("16.6%", 220, 150);
e.drawString("22.2%", 165, 260);
e.drawString("22.2%", 240, 215);
e.drawString("起点中文网", 70, 115);
e.drawString("潇湘书院", 240, 95);
e.drawString("小说阅读网", 120, 320);
e.drawString("红袖添香", 310, 210);
}
}
public class PieChart extends JFrame{
PieChart(){
setSize(400, 400);
setTitle("Corlor Pie Chart");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
myCanvas mc = new myCanvas();
add(mc);
}
public static void main(String[] args) {
new PieChart();
}
}
5、运行结果

本文介绍了如何在Java中使用Graphics和Canvas组件创建饼状图。首先,需要导入java.awt.*和javax.swing.JFrame库。接着,创建一个JFrame的子类并重写构造方法,再建立Canvas的子类并同样重写构造方法。Canvas对象通过继承Component的paint()方法,利用Graphics抽象类进行绘制。最后展示完整代码及运行效果。
2173

被折叠的 条评论
为什么被折叠?



