java 中鼠标事件_Java中的鼠标事件

java 中鼠标事件_Java中的鼠标事件任何组件上都可以发生鼠标事件 如 鼠标进进组件 退出组件 在组件上方单击鼠标 拖动鼠标等都发生鼠标事件 也就是说 组件可以成为发生鼠标事件的事件源 1 使用 MouseListene 接口处理鼠标事件使用 MouseListene 接口可以处理 5 种操纵发生的鼠标事件 1 在事件源上按下鼠标键 mousePressed MouseEvent 2 在事件源上开释鼠标键 mouseRelease M

任何组件上都可以发生鼠标事件,如:鼠标进进组件、退出组件、在组件上方单击鼠标、拖动鼠标等都发生鼠标事件,也就是说,组件可以成为发生鼠标事件的事件源。

1 使用MouseListener接口处理鼠标事件

使用MouseListener接口可以处理5种操纵发生的鼠标事件:

(1)在事件源上按下鼠标键。mousePressed(MouseEvent )

(2)在事件源上开释鼠标键。mouseReleased(MouseEvent )

(3)在事件源上点击鼠标键。 mouseClicked(MouseEvent )

(4)鼠标进进事件源。 mouseEntered(MouseEvent )

(5)鼠标退失事件源。 mouseExit(MouseEvent )

鼠标事件的类型是MouseEvent,即当发生鼠标事件时,MouseEvent类自动创建一个事件对象。

MouseEvent类中有下列几个重要的方法:

(1)getX() 获取鼠标在事件源坐标系中的x坐标。

(2)getY() 获取鼠标在事件源坐标系中的y坐标。

(3)getModifiers() 获取鼠标的左键或右键。鼠标的左键和右键分别使用InputEvent类中的常量BUTTONl_MASK和BUTTON3_MASK来表示

(4)getClickCount() 获取鼠标被单击的次数。

(5)getSource() 获取发生鼠标事件的事件源。

事件源获得监视器的方法是addMouseListener(监视器)。

MouseListener接口中有如下方法:

(1)mousePressed(MouseEvent) 负责处理鼠标按下事件。即,当你在事件源按下鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。

(2)mouseReleased(MouseEvent) 负责处理鼠标开释事件。即,当你在事件源开释鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。

(3)mouseEntered(MouseEvent) 负责处理鼠标进进事件源事件。即,当鼠标进进时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。

(4)mouseExited(MouseEvent) 负责处理鼠标离开事件。即,当鼠标离开容器时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。

(5)mouseClicked(MouseEvent) 负责处理点击鼠标事件。即,当鼠标被单击时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。

现在我们给出一个小程序mouse1.java,在这个小程序中有一个文本框,它负责记录鼠标事件。当鼠标进进小程序时,文本区显示甲鼠标进来了”;当鼠标离开时,文本区显示“鼠标走开了”;当鼠标被按下时,文本区显示“鼠标按下了”,并显示鼠标的坐标。

在下面例子mouse2.java中,当在画布上按下鼠标左键时,在鼠标位置处绘制一个圆;当按下鼠标右键时,在鼠标位置处绘制一个矩形:当鼠标退出画布时,清除绘制的全部图形。

下面的例子mouse3.java分别监视按钮、文本框和容器上的鼠标事件,当发生鼠标事件时,获取鼠标的坐标值,留意,事件源的坐标系的左上角是坐标源点

2 使用MouseMotionListener接口处理鼠标事件

使用MouseMotionListener接口可以处理两种操纵发生的鼠标事件:

(1)在事件源上拖动鼠标。

(2)在事件源上移动鼠标。

鼠标事件的类型是MouseEvent,即当发生鼠标事件时,MouseEvent类自动创建一个事件对象。 事件源获得监视器的方法是addMouseMotionListener(监视器)。

MouseMotionListener接口中有如下方法:

(1)mouseDragged(MouseEvent) 负责处理鼠标拖动事件。即,当你在事件源拖动鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。

(2)mouseMoved(MouseEvent) 负责处理鼠标移动事件。即,当你在事件源移动鼠标时,监视器发现这个事件后将自动调用接口中的这个方法对事件作出处理。

在这里我们也提供一个非常简单的用鼠标作画的小程序mouse4.java。我们的想法很简单,只要我们能用鼠标画点,那么就可以用鼠标自由作画了。我们已经会用drawLine(int x1,int yl,int x2,int y2)画从点(x1,y1)到点(x2,y2)的直线,那么当直线的出发点和终点相同时,就画出了一个点。

现在让我们来分析一下例子4的代码。当我们拖动鼠标时(按着鼠标左键),我们就获得了鼠标拖动时的坐标,同时调用repaint()方法画下这个坐标点。我们已经知道,在小程序中调用repaint方法时,程序首先清除paint()方法以前所画的内容,然后再调用paint()方法。但有时我们不想让程序清除paint()方法以前所画的所有内容。实际上当我们调用

repaint()方法时,程序自动地调用update(Graphics g)方法(从父类Component继续下来的)清除paint()方法以前所画的内容,然后再调用paint方法。因此我们可以在我们的小程序中重写这个update(Graphics g)方法(即隐躲父类的方法),根据需要来清除哪些部分或保存哪些部分。在这个例子中,我们在updatte(Graphics g)方法体内没有清除以前所画的内容(假如预备清除可使用clearrect方法,见17.4节)而是继续调用paint方法。受上面例子的启发,你可能已经想到,我们可以通过画实心圆来改变线条的粗细。下面是一个略微复杂的例子mouse5.java。在这个例子中我们可以控制线条的颜色,而且我们还可以使用橡皮擦掉所画的图形。稍加改进就可以控制线条的粗细,另外还可以使用上一节先容的方法控制鼠标的外形。

3 鼠标事件的转移

假如我们正监视一个容器上的鼠标事件,而容器中添加了一些组件,则当在组件上进行单击鼠标、移动鼠标等操纵时,容器将不知道这些操纵的发生。

可以使用鼠标事件的转移将一个事件源发生的鼠标事件转移到另一个事件源上,也就是说,当用户的在某个事件源上单击鼠标时,可以通过鼠标事件的转移导致另一个事件源上发生鼠标事件(声东击西)。使用javax.swing包中的SwingUtilities类的静态方法:

MouseEvent convertMouseEvent(Component source,MouseEvent sourceEvent,Component destination)

可以将source组件上发生的鼠标事件转移到组件destination,该方法返回转移后的鼠标事件。 在下面的例子mouse6.java中,用户单击一个按钮,然后拖动鼠标移动按钮的位置,观察鼠标事件的转移。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224166.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午12:34
下一篇 2026年3月17日 下午12:34


相关推荐

  • 洗牌算法思路_随机洗牌算法

    洗牌算法思路_随机洗牌算法1.背景    笔试时,遇到一个算法题:差不多是在n个不同的数中随机取出不重复的m个数。洗牌算法是将原来的数组进行打散,使原数组的某个数在打散后的数组中的每个位置上等概率的出现,刚好可以解决该问题。2.洗牌算法    由抽牌、换牌和插牌衍生出三种洗牌算法,其中抽牌和换牌分别对应Fisher-YatesShuffle和Knuth-DurstenfeldShhuffle算法。 …

    2026年2月12日
    6
  • 模型服务接口v2版本发布通告

    模型服务接口v2版本发布通告

    2026年3月12日
    2
  • LoRawan_lomando游戏下载

    LoRawan_lomando游戏下载版本管理 目录第4章MAC帧格式…1前言…14.1MAC层(PHYPayload)24.2MHDR帧头…24.2.1消息类型(MType位字段)24.2.2数据消息的主版本(Major位字段)34.3MAC载荷(MACPayload)44.3.1帧头(FHDR)44.3.2端口字段(FPort)84.3….

    2022年8月30日
    6
  • 将CSV的数据发送到kafka(java版)

    将CSV的数据发送到kafka(java版)

    2020年11月19日
    165
  • 令人头秃之Python学习Day4

    令人头秃之Python学习Day4Python 学习 Day4 一 字典 1 字典的创建 2 字典元素的访问 3 字典元素添加 修改 删除 4 序列解包 5 表格数据使用字典和列表存储 并实现访问 6 字典核心底层原理二 集合 1 集合创建和删除 1 使用 创建集合对象 并使用 add 方法添加元素 2 使用 set 将列表 元组等可迭代对象转成集合 如果原来数据存在重复数据 则只保留一个 3 remove 删除指定元素 4 clear 清空整个集合 2 集合相关操作三 控制语句 1 选择结构 1 单分支选择结构 2 双分支选择结构 3 多分支选择

    2026年3月19日
    2
  • 数据挖掘十大算法——简介

    数据挖掘十大算法——简介1.简介ICDM(国际数据挖掘大会)2006年从18种提名的数据挖掘算法中投票选出了十大算法。这18中提名数据挖掘算法分属10大数据挖掘主题,红色部分即为最终选出的十大算法: 分类(Classification) C4.5 CART KNearestNeighbours NaiveBayes 统计学习(StatisticalLearning) SV…

    2022年6月10日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号