1. 程式人生 > 其它 >滑鼠監聽事件、模擬畫圖工具

滑鼠監聽事件、模擬畫圖工具

package com.wang.gui;

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 MyFrame2("畫圖");
    }
}

//自己的類
class MyFrame2 extends Frame {
    //畫畫需要畫筆,需要監聽滑鼠當前的位置,需要集合
    ArrayList points = null;

    public MyFrame2(String title) {
        super(title);

        setBounds(200, 200, 400, 300);

        //存滑鼠點選的點
        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 void addPaint(Point point){
        points.add(point);
    }

    //介面卡模式
    private class MyMouseListener extends MouseAdapter {
        //滑鼠 按下,彈起,按住不放

        @Override
        public void mousePressed(MouseEvent e) {
            MyFrame2 frame = (MyFrame2) e.getSource();
            //這個我們點選的時候,就會在介面上產生一個點!畫
            //這個點就是滑鼠的點;
            frame.addPaint(new Point(e.getX(), e.getY()));

            //每次點選滑鼠都需要重新畫一遍
            frame.repaint();//重新整理
        }
    }
}