java AWT 绘图

在Component类里提供了和绘图有关的三个方法:

(1)paint(Graphics g):绘制组件的外观。
(2)update(Graphics g):调用paint()方法,刷新组件外观。
(3)repaint():调用update()方法,刷新组件外观。

使用Graphics类:

Graphics是一个抽象的画笔对象,Graphics可以在组件上绘制丰富多彩的几何图形和位图。Graphics提供了如下方法用于绘制几何图形和位图:
drawLine():绘制直线。
drawString():绘制字符串。
drawRect():绘制矩形。
drawRoundRect():绘制圆角矩形。
drawOval():绘制椭圆形。
drawPolygon():绘制多边形边框。
drawArc():绘制一段圆弧(可能是椭圆的圆弧)。
drawPolyline():绘制折线。
fillRect():填充一个矩形区域。
fillRoundRect():填充一个圆角矩形区域。
fillOval():填充椭圆形区域。
fillPolygon():填充一个多边形区域。
fillArc():填充圆弧和圆弧两个端点到中心连线所包围的区域。
drawImage():绘制位图。

setColor():设置画笔颜色,传入一个Color参数,可以使用RGB,CMYK设置一个颜色。
setFont():设置画笔字体(仅当绘制字符串时有效),Font参数需要指定字体名,字体样式,字体大小三个属性。
AWT专门提供了一个Canvas类作为绘图的画布,程序可以通过创建Canvas的子类,并重写它的paint()方法来实现绘图。

package javaAWT;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;

public class SimpleDraw {

    private final String RECT_SHAPE = "rect";
    private final String OVAL_SHAPE = "oval";
    private Frame frame = new Frame("Draw");
    private Button btnRect = new Button("Rect");
    private Button btnOval = new Button("Oval");
    private MyCanvas drawArea = new MyCanvas();
    // 用于保存需要绘制的图形变量
    private String shape = "";
    public void init() {

        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                // TODO Auto-generated method stub
                super.windowClosing(e);
                System.exit(0);
            }
        });

        Panel panel = new Panel();
        btnRect.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                shape = RECT_SHAPE;
                drawArea.repaint();
            }
        });

        btnOval.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                shape = OVAL_SHAPE;
                drawArea.repaint();
            }
        });

        panel.add(btnRect);
        panel.add(btnOval);
        drawArea.setPreferredSize(new Dimension(250, 180));
        frame.add(drawArea);
        frame.add(panel, BorderLayout.SOUTH);
        frame.pack();
        frame.setVisible(true);

    }

    class MyCanvas extends Canvas {
        @Override
        public void paint(Graphics g) {
            // TODO Auto-generated method stub
            super.paint(g);
            Random random = new Random();
            if (shape.equals(RECT_SHAPE)) {
                g.setColor(new Color(220, 100, 80));
                g.drawRect(random.nextInt(200), random.nextInt(120), 40, 60);
            }

            if (shape.equals(OVAL_SHAPE)) {
                g.setColor(new Color(80, 90, 200));
                g.drawOval(random.nextInt(200), random.nextInt(120), 50, 40);
            }
        }
    }

    public static void main(String[] args) {
        new SimpleDraw().init();
    }
}

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SongYuLong的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值