JavaSwing | MouseEvent 鼠标事件
目录 | contents
一、相关接口
与鼠标相关的顶层接口有两个:MouseListener和MouseMotionListener。
//MouseListener接口内的方法:
public void mousePressed (MouseEvent event )
public void mouseClicked (MouseEvent event )
public void mouseReleased (MouseEvent event )
public void mouseEntered (MouseEvent event )
public void mouseExited (MouseEvent event )
方法参数MouseEvent中封装了鼠标事件的相关信息(比如鼠标点击的x和y的坐标),其基类InputEvent中定义了一 些方法与常量。
//MouseMotionListener接口内的方法:
public void mouseDragged( MouseEvent event )
public void mouseMoved( MouseEvent event )
其子接口MouseInputListener“组合”了这两个接口的所有方法,另还有一个MouseWheelListener接口与鼠标中的滚轮滚动相关。
二、设置鼠标动态响应
以实时检测鼠标行为(显示在左下角)的程序为例
1、写出一个鼠标监听器类
该类需要接上MouseListener接口和MouseMotionListener接口,并且全部重写MouseListener接口内的5个方法和MouseMotionListener接口内的2个方法(上面已经列出)。每一个方法对应当鼠标发生该事件时对应的响应,比如:
public void mouseMoved(MouseEvent event) {//当鼠标移动时会运行此处代码
}
注意是总共7个方法去拿不重写,所以对于不需要的鼠标响应,也需要重写(或者考虑使用鼠标事件适配器),把代码内容空着就好。
public void mouseDragged(MouseEvent event) {//当鼠标拖动时会运行此处代码
}
例:
private class MouseHandler implements MouseListener, MouseMotionListener {// MouseListener event 响应// handle event when mouse released immediately after presspublic void mouseClicked(MouseEvent event) {statusBar.setText(String.format("Clicked at [%d, %d]",event.getX(), event.getY()));}// handle event when mouse pressedpublic void mousePressed(MouseEvent event) {statusBar.setText(String.format("Pressed at [%d, %d]",event.getX(), event.getY()));}// handle event when mouse releasedpublic void mouseReleased(MouseEvent event) {statusBar.setText(String.format("Released at [%d, %d]",event.getX(), event.getY()));}// handle event when mouse enters areapublic void mouseEntered(MouseEvent event) {statusBar.setText(String.format("Mouse entered at [%d, %d]",event.getX(), event.getY()));mousePanel.setBackground(Color.GREEN);}// handle event when mouse exits areapublic void mouseExited(MouseEvent event) {statusBar.setText("Mouse outside JPanel");mousePanel.setBackground(Color.WHITE);}// MouseMotionListener event 响应// handle event when user drags mouse with button pressedpublic void mouseDragged(MouseEvent event) {statusBar.setText(String.format("Dragged at [%d, %d]",event.getX(), event.getY()));}// handle event when user moves mousepublic void mouseMoved(MouseEvent event) {statusBar.setText(String.format("Moved at [%d, %d]",event.getX(), event.getY()));}
}
2、创建此鼠标监听器类的一个对象
直接new一个刚写好的MouseHandler对象
//实例化已经写好的鼠标事件监听器的对象
MouseHandler handler = new MouseHandler();
3、将鼠标监听器对象付托在事件源组件上
我这里是将鼠标的事件发生设定在一个mousePanel上(事件源为JPanel组件),使用 addXXListener方法 给它的两个监听器加上对应的监听器对象:
mousePanel.addMouseListener(handler); //加入监听器
mousePanel.addMouseMotionListener(handler); //加入监听器
完整代码有点点长就不贴喇~
三、MouseEvent类的方法
上面重写的每一个方法的传入参数都是MouseEvent类的,它继承了InputEvent类,其本身和基类都封装了不少方法与常量,我们可以直接使用MouseEvent类调用完成以下实用功能:
1、检测鼠标按键
一般鼠标都有三个按键,我们分别称之左、中、右按键。
使用 isMetaDown和isAltDown方法 来检测鼠标按键是对应哪个。
public boolean isMetaDown() //按下的是右按键,返回ture;否则返回false
public boolean isAltDown() //按下的是中间按键,返回ture;否则返回false
2、获取鼠标的位置
使用 getX、getY或者getPoint方法
public int getX() //获取鼠标的x坐标
public int getY() //获取鼠标的y坐标
public Point getPoint() // 获取鼠标位置(x, y)
3、获取鼠标连续点击次数
使用 getClickedCount方法 ,这个方法一般在检测双击、三击中很常用到。
public int getClickCount() //返回连续点击的次数
end
欢迎关注个人公众号“ 鸡翅编程 ”,这里是认真且乖巧的码农一枚。
---- 做最乖巧的博客er,做最扎实的程序员 ----
旨在用心写好每一篇文章,平常会把笔记汇总成推送更新~
JavaSwing | MouseEvent 鼠标事件相关推荐
- MouseEvent鼠标事件对象
MouseEvent鼠标事件对象 <!DOCTYPE html> <html lang="en"><head><meta charset= ...
- 常用事件方法及技巧(二) -- MouseEvent(鼠标事件)
先说明一下,我并不会把所有的内容都写出来,只列我认为有必要讲解一下的内容.如果要了解全部内容,请参看Flash自带的帮助文件.该系列文章都是按照这个思路写的. 先说一个本人觉得很实用的通用方法:toS ...
- 104_鼠标事件对象
1. 当发生mousedown.mouseup.dblclick.mouseover.mouseenter.mousemove.mouseout和 mouseleave事件时, 它们的执行函数都会传递 ...
- JAVA——鼠标事件(MouseEvent)MouseListener监听器DEMO
基本概念 MouseEvent:所有组件都能发出鼠标事件,MouseEvent类负责捕获鼠标事件,可以通过为组件添加实现了MouseListener接口的监听器类来处理相应的鼠标事件. MouseLi ...
- 事件监听机制——鼠标事件MouseEvent
鼠标事件 鼠标事件包括鼠标的双击.左击.右击.中间键等等,本文进行事件加载进行简单介绍,具体可以参考键盘事件. import java.awt.*; import java.awt.event.*;/ ...
- 【鼠标事件 MouseEvent】clientX clientY offsetX offsetX pageX screenX screenY
鼠标事件 MouseEvent 对象,下clientX clientY offsetX offsetX pageX screenX screenY 定义转自 MDNMouseEvent MouseEv ...
- java鼠标点击事件_JavaSE 鼠标事件类(MouseEvent)实现
{相关信息} 鼠标事件类(MouseEvent)指组件中发生的鼠标动作事件,例如按下鼠标.释放鼠标.单击鼠标.鼠标光标进入或离开组件的几何 图形.移动鼠标.拖动鼠标.当鼠标移动到某个区域或鼠标单击某个 ...
- 鼠标事件-MouseEvent
当鼠标进行某种操作时,就会生成一个event对象,该对象记录着鼠标触发事件时的所有属性. 可以通过如下方法在google控制台打印出 MouseEvent 对象. function mouseDown ...
- java mouseevent_「mouse_event」Java MouseEvent类(鼠标事件) - seo实验室
mouse_event 简介 所有组件都能发出鼠标事件,MouseEvent类负责捕获鼠标事件,可以通过为组件添加实现了MouseListener接口的监听器类来处理相应的鼠标事件. MouseLis ...
最新文章
- html自动刷新倒计时,基于JavaScript实现自动更新倒计时效果
- linux关闭硬件蜂鸣器,linux 关闭主板上的蜂鸣器声音
- another CRM inbound debug - 另一个CRM中间件的调试记录
- d.ts文件可以注释html吗,如何编写一个d.ts文件的步骤详解_旧店_前端开发者
- 封装 电流密度 重布线_具有周边硅通孔的晶圆级芯片封装有限元分析
- 线上发布?华为P50将于今日开启预热:可能没有超大杯版
- 桌面只计算机图标发白,win7电脑桌面图标突然变成了白色怎么办?
- 父元素没有高度,子元素高度失效
- java enable_Java Compiler enable()方法与示例
- Linux下服务器密码正确,登录的时候却提示密码错误
- [GZOI2019GXOI2019]省选AFO记
- 迅雷11下载报错:下载引擎未启动
- 写一函数,将两个字符串中的元音字母复制到另一个字符串,然后输出。
- quartz - 宕机后的设置
- MySQL Authentications
- 通过python实现乘法口诀
- 选择某种Map集合保存学号从1到15的学员的学号(键)和姓名(值)
- java发送post请求上传文件和json数据
- 如何顺利通过 PMP 考试?
- 面试题错题解析5_操作系统