鼠标监听

[Java] MouseListener、MouseMotionListener 监听器与 MouseEvent 事件 注意: 发生鼠标点击事件时,将会依次触发以下方法: mousePressed(鼠标按下)——>mouseReleased(鼠标松开)->mouseClicked(按下 阅读详情

 


图说MouseListener,MouseListener接口   参考资料:sun网站上面的两个小程序。  
这是java提供给侦听器(参照jdk中的翻译叫做侦听器)的接受鼠标事件的两个接口的定义。
 
 
 

 

两个public interface MouseListener extends EventListener
{     public void mousePressed(MouseEvent e);// 鼠标按键在组件上单击(按下并释放)时调用。

public void mouseReleased(MouseEvent e); //鼠标按钮在组件上释放时调用。    

public void mouseClicked(MouseEvent e);// 鼠标按键在组件上按下时调用。    

public void mouseEntered(MouseEvent e);// 鼠标进入到组件上时调用。

 public void mouseExited(MouseEvent e);// 鼠标离开组件时调用。

}
 
 
public interface MouseMotionListener extends EventListener
 
{
 
    public void mouseDragged(MouseEvent e);// 鼠标按键在组件上按下并拖动时调用。
 
    public void mouseMoved(MouseEvent e);// 鼠标光标移动到组件上但无按键按下时调用。
 
}
 

 
 
PS:在方法的右边是JDK中关于这个方法的描述,显然,上面的描述并未让我们对这几个方法的操作有很好的理解。
 
例如:public void mouseClicked(MouseEvent e);// 鼠标按键在组件上按下时调用。
 
       public void mousePressed(MouseEvent e);// 鼠标按键在组件上单击(按下并释放)时调用。
 
这两个方法就有点含混,当用户点击组件时,是先发生mouseClicked?还是先发生mousePressed?
 
mouseReleased和mouseClicked又是哪一个先发生呢?
 
当然凭猜测永远也是得不到答案的。那只能用程序证明:
 
 
 
这个程序是用来测试MouseListener接口的
 
(程序来自 http://java.sun.com/docs/books/tutorial/index.html)
 

 


PS:当用户在上面 区域进行鼠标操作时,下面就会有输出用户的鼠标操作的一些信息(按照鼠标
 
事件发生的先后)留心最后三行。就可以清晰的看出mousePressed,mouseReleased ,mouseClicked之间的的关系了。
 
 
 
当用户鼠标刚点击 区域(此时鼠标还未释放,mouseReleased 肯定还没有发生,mouseClicked事件也没有发生),
 
这时用户有两种选择:
 
[选择一:鼠标在当前位置释放]:这种情况下连续产生两个鼠标事件,先产生mouseReleased,后产生mouseClicked
 
[选择二:鼠标拉到另一个地方释放(这种情况很常见,我们在windows下点一文件拖住往其他地方放)]:这时候只发生mouseReleased事件,不发生mouseClicked事件。
 
 
 
 
 
上面输出的信息中也有mouseEntered,mouseExited两个鼠标事件。可以自己运行下程序感受这两个方法。
 
 
 
 
 
下面这个程序用来测试MouseMotionListener
 
(程序来自 http://java.sun.com/docs/books/tutorial/index.html)
 

 


PS:当用户鼠标刚在 区域滑动鼠标时候(这时候没有点住鼠标左键,就叫它滑动)会产生大量的Mousemoved鼠标事件。从上面的输出信息中可以看出来。当用户拉动鼠标的时候(按住鼠标左键,就叫它拉动)会产生大量的mouseDragged鼠标事件(上面没有显示,不过类似)。
 
这里可以看出来,按住鼠标和不按住鼠标是个互斥操作,所以不可能在一次操作中同时出现mouseDragged和Mousemoved两个事件。
 
相对于MouseListener接口,MouseMotionListener接口要好理解的多。
 
 
 
这是中文JDK关于这两个接口的描述:
 
 
 

 

public interface MouseListener
 
extends EventListener
 
用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。(要跟踪鼠标移动和鼠标拖动,请使用 MouseMotionListener。)

 
 
旨在处理鼠标事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 MouseAdapter(仅重写所需的方法)。

然后使用组件的 addMouseListener 方法将从该类所创建的侦听器对象向该组件注册。当按下、释放或单击(按下并释放)鼠标时会生成鼠标事件。鼠标光标进入或离开组件时也会生成鼠标事件。发生鼠标事件时,将调用该侦听器对象中的相应方法,并将 MouseEvent 传递给该方法。

 
 public interface MouseMotionListener extends EventListener
用于接收组件上的鼠标移动事件的侦听器接口。(对于单击和其他鼠标事件,请使用 MouseListener。)

旨在处理鼠标移动事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 MouseMotionAdapter 类(仅重写有用的方法)。

然后使用组件的 addMouseMotionListener 方法将从该类所创建的侦听器对象向该组件注册。移动或拖动鼠标时会生成鼠标移动事件。(将生成很多此类事件)。发生鼠标移动事件时,将调用该侦听器对象中的相应方法,并将 MouseEvent 传递给该方法。


 
 


 
 
问题:
 


PS:当鼠标快速移动的时候mouseMoved事件无法即时的响应?
 


上图是根据在侦听器mouseMoved方法中绘制蓝色小矩形。让鼠标移动时能产生模拟画笔的效果,不过鼠标快速移动时mouseMoved事件好象产生的不是很均匀。中间好多象素都没有产生mouseMoved事件?或者是产生了mouseMoved事件而无法及时调用绘制矩形的方法?

Unity3d UI中对于鼠标的监听事件 Plane中的的一个Button  and Image控件 方法一. 倒入命名空间   using    UnityEngine.EventSystem;                          using     UnityEngine.UI; 通过接口   EventTrigger   (EventTrigger继承类很多的父类,可以查看其源码VS编辑器按  F12 阅读详情

相关推荐

c# 获取鼠标坐标,鼠标点击,鼠标事件监听,键盘事件监听

c# 获取鼠标坐标,鼠标点击,鼠标事件监听,键盘事件监听

weixin_50329169的博客 2956

监听鼠标操作

手机端监听touchstart事件。电脑端监听鼠标移动操作。

qq_48321582的博客 837

鼠标及键盘监听实现

该项目代码用于实现鼠标动作及键盘事件的监听。可单独监听鼠标事件或键盘事件。

JavaScript 鼠标事件监听&&触发时机&&触发顺序

先说下触发时机和作用键(左键、右键)

jinse29的博客 7679

自动化学报latex模板——ctex2.4.6和ctex2.9.2直接使用步骤

自动化学报latex模板——ctex2.4.6和ctex2.9.2直接使用步骤 1.背景及问题 最近在使用自动化学报latex模板写作业时,一只对latex搞不清楚,网上关于各种版本的latex下载了一堆(比如ctex中文套装方案的各个版本及texlive+texstudio方案,中间还升级了miktex,windet等),发现都未能成功编译出来自动化学报的latex模板,反正开始头很大!!!最后终于没忍住打开了: 自动化学报官网下载模板链接,因为我就要用latex模板(不能服输!)找到的解决方案是:使用

QIANFANGshiwo的博客 7709

汽车OTA安全启动:ECU双验签机制与实战排障指南

汽车OTA升级中的安全启动,本质是基于密码学的信任建立过程,其核心在于ECU上电时对固件镜像的可信验证。该机制依托硬件信任根(Secure Boot ROM),通过RSA/ECDSA等非对称算法完成签名验签,确保升级包未被篡改且来源可信。技术价值体现在防止恶意固件注入、支撑功能安全(ASIL)与信息安全(ISO/SAE 21434)合规。典型应用场景包括4S店远程升级、BMS控制器固件更新及多ECU协同启动。实践中,验签名失败往往源于证书链断裂、Flash布局错位或KeyUsage字段不匹配等底层工程细节,

weixin_29314405的博客 77

全局监听鼠标事件

全局监听鼠标事件 可实现功能:长时间无操作返回登录页 var lastTime = new Date().getTime(); var currentTime = new Date().getTime(); // var timeOut = 30 * 60 * 1000; //设置超时时间: 30分 var timeOut = 10 * 1000; //设置超时时间: 30分 window.onload = function () { // window.document.onmousedown

weixin_46155697的博客 2299

AHP层次分析法在项目风险评估中的实战应用(含Excel模板)

本文详细介绍了AHP层次分析法在项目风险评估中的实战应用。通过构建风险层次模型、利用判断矩阵量化主观判断,并结合Excel工具进行权重计算与一致性检验,将模糊的定性风险转化为清晰的量化排序。文章以新产品上线项目为例,提供了完整的分析流程和可操作的Excel模板,帮助项目经理高效识别并优先处理核心风险。

weixin_29061465的博客 570

DOM事件监听——鼠标事件,键盘事件,表单事件

事件监听指的是程序通过特定的方式设置 “监听器”(也可称为事件处理程序、事件回调函数等),用于检测和响应特定 “事件” 的发生。当所关注的事件在程序运行环境中发生时,相应的监听器函数就会被触发执行,以完成特定的处理任务。

sususugaa的博客 1424

Python量化交易实战:如何用vnpy+Tushare获取股票历史数据(附完整代码)

本文详细介绍了如何利用vn.py框架与Tushare数据接口,构建一个健壮的Python量化交易数据获取引擎。通过封装Tushare API,实现股票历史数据的自动化获取与格式转换,并适配vn.py的BarData结构,为策略回测与实盘交易提供稳定、高效的数据基础。文中提供了完整的代码实现,涵盖环境配置、核心封装逻辑及高级功能扩展。

cola5的博客 1219

计量经济学——事件研究法/事件分析法

计量经济学——事件研究法/事件分析法

weixin_46189461的博客 6752

CesiumJS 案例 P20:监听鼠标滚轮、监听鼠标左键按下与松开、监听鼠标右键按下与松开、监听鼠标左击落点

CesiumJS 案例 P20:监听鼠标滚轮、监听鼠标左键按下与松开、监听鼠标右键按下与松开、监听鼠标左击落点

weixin_52173250的博客 1746

WIFI中CSI的读取

学习目标: 目前正在做基于WIFI的无设备定位,准备使用信道状态信息(CSI),学习一下。 目前采集数据环境已经搭建好,准备研究信号的预处理。 学习内容: 1、 信号的读取——read_bf_file函数的研究 2、 3、 4、 1. read_bf_file详解: %READ_BF_FILE Reads in a file of beamforming feedback logs. % This version uses the *C* version of read_bfee, ...

sz3076799的博客 8892

java 监听鼠标_Java监听鼠标事件

package com.han;import java.awt.Container;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JFrame;/*** 监听鼠标事件* 可以看出,当双击鼠标时,第一次的点击会触发一次单击事件* @author HAN**/public ...

weixin_36427631的博客 1584

uniapp - H5人脸识别认证与活体检测功能(纯前端免费方案+微信sdk人脸识别)完整源码,微信公众号网页/h5端人脸识别功能人脸核身(微信方案提供后端spring boot+thinkphp源码

uniapp实现人脸认证,uniAPP h5手机拍照+人脸识别,免费人脸识别插件,前端人脸识别解决方案,uniapp H5人脸识别带前后摄像头,人脸识别在H5页面进行采集,微信公众号H5人脸核身,H5端人脸识别功能实现,免费h5人脸识别插件方案,微信公众号H5网页实现人脸识别,uniapp人脸监测,uniapp人脸生物监测,使用uniapp开发H5人脸采集功能/人脸识别功能,uniapp项目—h5端人脸采集功能实现,uniapp vue3人脸核身,H5活体检测认证,人脸认证张嘴摇摇头指引动作,人脸核身 微信

🏆 前端领域优质创作者 3809

【Docker】一招解决超时镜像超时报错:`ERROR: Get https://registry-1.docker.io/v2/`

Docker 镜像拉取超时或失败并不是 Docker 本身的缺陷,而是网络环境和默认配置在特定场景下的限制所导致的结果。通过本文的分析可以看到,问题的核心往往集中在三个方面:网络访问延迟、DNS 解析速度以及客户端默认超时时间。针对这些问题,最直接、有效的做法是使用国内镜像加速器,这不仅能够显著提升拉取速度,还能保证在企业内网或家庭网络中更加稳定

博客 1027

java中按钮监听以及鼠标监听的使用

       我们在进行java的GUI开发的时候,按钮以及鼠标监听的使用无疑是相当最要的,而如何巧妙的运用这些监听器,对今后的开发更是有很大的帮助,下面将分别介绍。        实现按钮监听的方法:        在java.awt.event下面有一个ActionListener的类,它是一个用于接收操作事件的侦听器接口,对处理操作事件感兴趣的就可以去使用这个接口。        ...

sk804132955的博客 2678

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

AWT—鼠标监听,窗口监听,键盘监听

AWT—鼠标监听,窗口监听,键盘监听 鼠标监听 目的:实现鼠标作画 package com.deng.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 { .

D19992730096的博客 381

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java之事件监听(三)鼠标监听

package 第一版; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMot

好久不见 3591

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

键盘监听器和鼠标监听器

<br />键盘监听器和鼠标监听器  <br />键盘监听器<br />键盘监听器KeyListener用来监听键盘事件。键盘事件有三种:KEY_PRESSED键按下了,KEY_RELEASED键松开了,KEY_TYPED键按过了。每个键都有一个键码,普通键的键码就是ASCII码。键码可通过int getKeyCode()方法获得。Java设置了一种“虚拟键码”(Virtual Key Code),用“VK_”作为前缀,例如VK_G。下面是某些特殊键的虚拟键码。<br />键码<br />含义<br />键

非法操作 2118

CesiumJS 案例 P19:添加矩形、监听鼠标左击、监听鼠标右击、监听鼠标移动

CesiumJS 案例 P19:添加矩形、监听鼠标左击、监听鼠标右击、监听鼠标移动

weixin_52173250的博客 1423

java鼠标监听类型_java 鼠标监听

java 鼠标监听关注:288答案:2mip版解决时间 2021-01-18 03:19提问者失夜久伴你2021-01-17 16:02java 中对鼠标点击监听想整个JAVA小程序中都能够调用怎么写给个例子 谢谢 分不多 不好意思了最佳答案二级知识专家風聲提筆2021-01-17 16:39//这是应用程序,跟java小程序的大体思路还是差不多的,你改改import javax.swi...

weixin_29693211的博客 299

winform监听全局鼠标事件

winform监听全局鼠标事件首先,定义一些常量和结构体,以便与Windows API进行交互// 钩子类型 - 全局鼠标钩子​// 鼠标消息​// 钩子句柄​// 钩子过程委托​// 钩子过程委托类型​// MSLLHOOKSTRUCT 结构​// POINT 结构} // 设置钩子​// 移除钩子​// 调用下一个钩子​// 获取当前进程模块句柄// 用来存储 MainForm 实例​​。winform监听鼠标事件

ai 1350

C# 监听鼠标操作

通过这几篇内容,我想我们可以整合一下,做一个简单的操作录制功能,用来解决一下日常的繁琐切循环的操作,这个功能之前有发过一个简单的版本,但不是通过HOOK去实现的,而是让用户自己手动录制,再去执行。使用HOOK的话,直接监听一遍用户的操作,记录相应的动作即可,同时可操作性也有很大提高(emmmm,我觉得回头有时间我自己先封装下,可能用途还不小,同时想起之前写的关键字查询的工具,以为只是偶尔之需,万万没想到它在我生活、工作中也帮了我很多。HOOK的工具类可参考前面的文章,这里不赘述,贴下需要更改的代码。

qq_27410185的博客 7387

python监听鼠标事件_Python 键盘鼠标监听

异想天开的想记录一下自己每天的键盘键位走向,于是就在网上搜索了一下相关的实现,然后就发现了一个第三方的库pyHook.封装的很好,我们只需要傻瓜式的调用里面的API就可以了。下面是我在使用pyHook 的过程中遇到的问题和经验总结。准备工作操作系统: windows7 64位旗舰版Python版本: 2.7.11第三方库:pyHook 下载地址pythoncom /pywin32 下载地址IDE:...

weixin_39758712的博客 2125

python鼠标监听_用Python监听鼠标和键盘事件

PyHook是一个基于Python的“钩子”库,主要用于监听当前电脑上鼠标和键盘的事件。这个库依赖于另一个Python库PyWin32,如同名字所显示的,PyWin32只能运行在Windows平台,所以PyHook也只能运行在Windows平台。关于PyHook的使用,在它的官方主页上就有一个简单的教程,大体上来说,可以这样使用:# -*- coding: utf-8 -*-## by oldj#...

weixin_42524308的博客 2422
上一篇: 疯狂JAVA讲义---第十二章:Swing编程(七)JTree树
下一篇: [Oracle]分割字符串返回数组
kejiaming
博客等级 码龄15年 19粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值