目录 | contents

一、相关接口

与鼠标相关的顶层接口有两个:MouseListenerMouseMotionListener

//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 鼠标事件相关推荐

  1. MouseEvent鼠标事件对象

    MouseEvent鼠标事件对象 <!DOCTYPE html> <html lang="en"><head><meta charset= ...

  2. 常用事件方法及技巧(二) -- MouseEvent(鼠标事件)

    先说明一下,我并不会把所有的内容都写出来,只列我认为有必要讲解一下的内容.如果要了解全部内容,请参看Flash自带的帮助文件.该系列文章都是按照这个思路写的. 先说一个本人觉得很实用的通用方法:toS ...

  3. 104_鼠标事件对象

    1. 当发生mousedown.mouseup.dblclick.mouseover.mouseenter.mousemove.mouseout和 mouseleave事件时, 它们的执行函数都会传递 ...

  4. JAVA——鼠标事件(MouseEvent)MouseListener监听器DEMO

    基本概念 MouseEvent:所有组件都能发出鼠标事件,MouseEvent类负责捕获鼠标事件,可以通过为组件添加实现了MouseListener接口的监听器类来处理相应的鼠标事件. MouseLi ...

  5. 事件监听机制——鼠标事件MouseEvent

    鼠标事件 鼠标事件包括鼠标的双击.左击.右击.中间键等等,本文进行事件加载进行简单介绍,具体可以参考键盘事件. import java.awt.*; import java.awt.event.*;/ ...

  6. 【鼠标事件 MouseEvent】clientX clientY offsetX offsetX pageX screenX screenY

    鼠标事件 MouseEvent 对象,下clientX clientY offsetX offsetX pageX screenX screenY 定义转自 MDNMouseEvent MouseEv ...

  7. java鼠标点击事件_JavaSE 鼠标事件类(MouseEvent)实现

    {相关信息} 鼠标事件类(MouseEvent)指组件中发生的鼠标动作事件,例如按下鼠标.释放鼠标.单击鼠标.鼠标光标进入或离开组件的几何 图形.移动鼠标.拖动鼠标.当鼠标移动到某个区域或鼠标单击某个 ...

  8. 鼠标事件-MouseEvent

    当鼠标进行某种操作时,就会生成一个event对象,该对象记录着鼠标触发事件时的所有属性. 可以通过如下方法在google控制台打印出 MouseEvent 对象. function mouseDown ...

  9. java mouseevent_「mouse_event」Java MouseEvent类(鼠标事件) - seo实验室

    mouse_event 简介 所有组件都能发出鼠标事件,MouseEvent类负责捕获鼠标事件,可以通过为组件添加实现了MouseListener接口的监听器类来处理相应的鼠标事件. MouseLis ...

最新文章

  1. html自动刷新倒计时,基于JavaScript实现自动更新倒计时效果
  2. linux关闭硬件蜂鸣器,linux 关闭主板上的蜂鸣器声音
  3. another CRM inbound debug - 另一个CRM中间件的调试记录
  4. d.ts文件可以注释html吗,如何编写一个d.ts文件的步骤详解_旧店_前端开发者
  5. 封装 电流密度 重布线_具有周边硅通孔的晶圆级芯片封装有限元分析
  6. 线上发布?华为P50将于今日开启预热:可能没有超大杯版
  7. 桌面只计算机图标发白,win7电脑桌面图标突然变成了白色怎么办?
  8. 父元素没有高度,子元素高度失效
  9. java enable_Java Compiler enable()方法与示例
  10. Linux下服务器密码正确,登录的时候却提示密码错误
  11. [GZOI2019GXOI2019]省选AFO记
  12. 迅雷11下载报错:下载引擎未启动
  13. 写一函数,将两个字符串中的元音字母复制到另一个字符串,然后输出。
  14. quartz - 宕机后的设置
  15. MySQL Authentications
  16. 通过python实现乘法口诀
  17. 选择某种Map集合保存学号从1到15的学员的学号(键)和姓名(值)
  18. java发送post请求上传文件和json数据
  19. 如何顺利通过 PMP 考试?
  20. 面试题错题解析5_操作系统

热门文章

  1. ssm+jsp计算机毕业设计成人自考管理平台tg98m(程序+LW+源码+远程部署)
  2. 信息系统项目管理师-项目进度管理
  3. Linux系统入侵痕迹分析取证
  4. Excel2016 打开表格右边空白窗口太宽不正常,怎么办?
  5. python实现MP3加封面图片,修改作者,专辑
  6. 解题:使用 Promise 实现 machine 函数
  7. 2020焊工(初级)作业考试题库及焊工(初级)实操考试视频
  8. HDU 3790 最短路径问题 裸跑dijkstra
  9. ABAP---基础(一)
  10. ZhangSuen图像细化算法