您的位置:首页 > 产品设计 > UI/UE

GUI编程核心技术AWT——鼠标监听事件、模拟简易画图工具

2020-08-20 21:59 1076 查看

GUI编程核心技术AWT——鼠标监听事件、模拟简易画图工具

思路:要模拟一个简易画图工具,要有一个画板(MyFrame),一个画笔(paint),一个鼠标,用于鼠标监听事件(MyMouseListener),一个存点的数组或者集合(ArrayList)

步骤:

  1. 鼠标的点击的点存到数组中
  2. 画笔读取数组存的点
  3. 将读取到的点转换再画到画板上
  4. 然后画板再显示出来
package com.wei.lesson04;

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) {
super(title);//调用父类的属性
setBounds(200, 200, 400, 400);
//存鼠标点击的点  ArrayList:数组清单   用来存放点,再传给points
points = new ArrayList<>();
//建一个鼠标监听器,要针对画画的这个窗口
//this代表当前的这个窗口
this.addMouseListener(new MyMouseListener());//鼠标被监听上了
setVisible(true);
}

@Override//画笔监听事件要和鼠标监听事件绑定
public void paint(Graphics g) {
//画下去的每一个位置都要和鼠标绑定
Iterator iterator = points.iterator();//对points使用迭代器,遍历里面的点
//如果迭代器里还存在点,就画下来,然后在对下一个点遍历
while (iterator.hasNext()) {
Point point = (Point) iterator.next();//返回一个Point类型的点
g.setColor(Color.DARK_GRAY);
//鼠标点击的点在窗口上可能显示的是一个圆
g.drawOval(point.x, point.y, 10, 10);
}
}
//把鼠标上点击的点添加到画笔上,就是鼠标和画笔绑定了
public void addPaint(Point point) {//写一个方法调用用来存放鼠标的点的points
points.add(point);//point表示当前传过来的点,把point存进points里
}

//适配器模式    监听器类
private   class MyMouseListener extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {//e获取鼠标的资源
e.getSource();//getSource的资源的来源是Frame窗口,
MyFrame frame = (MyFrame) e.getSource();//把Frame类型强转为MyFrame类型,就获取了画图的窗口里的鼠标相关的资源
//这个点就是鼠标的点   把当前的点传给上面的points进行遍历
frame.addPaint(new Point(e.getX(), e.getY())) ;//坐标

//每次点击鼠标都要重新画一遍,将之前画的点保存了下来  才能画多个点
frame.repaint();//刷新页面
}
}
}

学习路径

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: