GUIプログラミングの研究では、6つのAWT関連(ブラシペイント、マウスモニタリングイベント、アナログ描画ツール)を注記しています。

GUIプログラミングの研究は6 AWT関連(ブラシペイント)を注記


ペイントについて学ぶ

  • フレームにはペイントブラシが付属
package pers.ylw.lesson03;

import java.awt.*;

public class TestPaint {
    public static void main(String[] args) {
        new MyPaint().loadFrame();
    }
}

class MyPaint extends Frame{

    public void loadFrame(){
        setBounds(200,200,600,500);
        setVisible(true);
    }

    //重写Frame自带的画笔paint方法
    @Override
    public void paint(Graphics g) {
        //画笔,需要颜色,可以画画
        g.setColor(Color.red);
        g.drawOval(100,100,100,100); //空心圆
        g.fillOval(200,100,100,100); //实心圆

        g.setColor(Color.blue);
        g.fillRect(100,200,200,200); //实心矩形

        //养成习惯,画笔用完要还原最初的颜色
    }
}

効果

ここに画像の説明を挿入

描画ツールをシミュレートしてポイントを描画します(マウスを使用してイベントを監視します)

アイデア
ここに画像の説明を挿入

package pers.ylw.lesson03;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;

//鼠标监听事件
public class TestMouseListener {
    public static void main(String[] args) {
        new MyFrame("画图");
    }
}

//自己的类
class MyFrame extends Frame{
    //画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点
    ArrayList points;

    public MyFrame(String title){ //title是窗口的名字
        super(title);
        setBounds(200,200,400,400);
        //存放鼠标点击的点
        points = new ArrayList();
        //鼠标监听事件,针对这个窗口啊
        this.addMouseListener(new MyMouseListener());

        setVisible(true);
    }

    //画笔,根据集合里存储的鼠标位置画点
    @Override
    public void paint(Graphics g) {
        //画画,监听鼠标事件
        Iterator iterator = points.iterator(); //获取集合的迭代器
        while(iterator.hasNext()){
           Point point = (Point) iterator.next(); //获取当前集合存储的位置,如果迭代器有下一个,迭代器移动到下一个
            g.setColor(Color.BLUE); //设置画笔颜色
            //画一个实心圆,把获取到的鼠标的位置传进去,作为圆的位置,后两个参数是圆的直径
            g.fillOval(point.x,point.y,10,10);
        }

    }

    //继承适配器,不需要重写全部方法
    private class MyMouseListener extends MouseAdapter{
        //鼠标:按下,按住不放,弹起

        //这里是按住不放的监听
        @Override
        public void mousePressed(MouseEvent e) {
            MyFrame myFrame = (MyFrame) e.getSource();//e.getSource()返回当前对象,然后强转

            //e代表当前的鼠标,获取其坐标,添加到集合里
            points.add(new Point(e.getX(),e.getY()));

            //调用画点,刷新画板
            myFrame.repaint(); //就是每点一下调用paint()方法

			//代码简化
			//MyFrame myFrame = (MyFrame) e.getSource();//e.getSource()返回当前对象,然后强转
			//这一行可以不写
			//myFrame.repaint(); //就是每点一下调用paint()方法
			//上面那一行不写,这一行就可以改成 repaint()
			
        }
    }
}

効果
ここに画像の説明を挿入

318の元の記事を公開 44のような 訪問者20,000以上

おすすめ

転載: blog.csdn.net/qq_43594119/article/details/105689215