GUI-AWT-鼠标监听

鼠标监听

复制代码
 1 package com.luckylu.gui;
 2 
 3 import java.awt.*;
 4 import java.awt.event.MouseAdapter;
 5 import java.awt.event.MouseEvent;
 6 import java.awt.event.WindowAdapter;
 7 import java.awt.event.WindowEvent;
 8 import java.util.ArrayList;
 9 import java.util.Iterator;
10 
11 //鼠标监听事件
12 public class TestMouseListener {
13     public static void main(String[] args) {
14         new MyFrame3("画图");
15     }
16 }
17 //自己的类
18 class MyFrame3 extends Frame{
19     //画画需要画笔,需要监听鼠标的当前位置,需要集合来存储这个点
20     ArrayList points;
21     public MyFrame3(String title){
22         super(title);
23         setBounds(200,200,400,300);
24         //存鼠标点击的点
25         points = new ArrayList<>();
26 
27         setVisible(true);
28         //鼠标监听器,针对此窗口;
29         this.addMouseListener(new MyMouseListener());
30         addWindowListener(new WindowAdapter() {
31             @Override
32             public void windowClosing(WindowEvent e) {
33                 System.exit(0);
34             }
35         });
36     }
37 
38     //ctrl+ o 快捷键
39     @Override
40     public void paint(Graphics g) {
41         //画画,监听鼠标的事件
42         Iterator iterator = points.iterator();  //定义迭代器iterator
43         while (iterator.hasNext()) {
44             Point point = (Point) iterator.next();
45             g.setColor(Color.blue);//画笔颜色
46             g.fillOval(point.x, point.y, 10, 10); //画笔位置及大小
47         }
48     }
49     //添加点到窗口界面
50     public void addPaint(Point point){
51         points.add(point);
52     }
53 
54     //适配器模式
55     private class MyMouseListener extends MouseAdapter {
56         //鼠标按下
57         @Override
58         public void mousePressed(MouseEvent e) {
59             MyFrame3 myframe = (MyFrame3) e.getSource();
60             //点击时,就会在界面上上产业一个点!
61             //这个点就是鼠标点的位置
62             myframe.addPaint(new Point(e.getX(),e.getY()));
63             //每次点击鼠标都需要重新画一遍
64             myframe.repaint(); // 刷新
65         }
66     }
67 }
复制代码

结果:

 

posted @   luckylu1983  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示