java绘制柱形图

来源:互联网 发布:2007年nba总决赛数据 编辑:程序博客网 时间:2024/06/02 13:13

使用模拟数据绘制一个柱形统计图:重写paint()方法。


代码:


import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.util.Random;import javax.swing.JFrame;public class Demo10 extends JFrame{//绘制柱形统计图private Random ran;public Demo(){super();ran = new Random();setTitle("绘制柱形图");setBounds(100, 100, 400, 271);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}@Overridepublic void paint(Graphics g){int Width = getWidth();int Height = getHeight();int leftMargin = 20;//柱形图左边界int topMargin = 50;//柱形图上边界Graphics2D g2 = (Graphics2D) g;int ruler = Height-topMargin-5;int rulerStep = ruler/10;//将当前的高度评分为10个单位g2.setColor(Color.WHITE);//绘制白色背景g2.fillRect(0, 0, Width, Height);//绘制矩形图g2.setColor(Color.LIGHT_GRAY);for(int i=0;i<=10;i++){//绘制灰色横线和百分比g2.drawString((100-10*i)+"%", 5, topMargin+rulerStep*i);//写下百分比g2.drawLine(5, topMargin+rulerStep*i, Width, topMargin+rulerStep*i);//绘制灰色横线}g2.setColor(Color.PINK);for(int i=0;i<4;i++){//绘制柱形图int value = ran.nextInt(Height-topMargin-10)+10;//随机产生柱形的百分比int step = (i+1)*40;//设置每隔柱形图的水平间隔为40//绘制矩形//g2.drawRoundRect(leftMargin+step*2, Height-value, 40, value, 40, 10);g2.fillRoundRect(leftMargin+step*2, Height-value, 40, value, 40, 10);//列出产品的编号g2.drawString("产品"+(i+1), leftMargin+step*2, Height-value-5);}}public static void main(String[] args) {Demo demo = new Demo();demo.setVisible(true);}}


0 0