java - 检测 JPanel 上的鼠标移动事件

标签 java events mouse jpanel

我有一个 JPanel,我想检测以下事件

(1)当鼠标移入时

(2)当鼠标移出时

(1) 非常简单。 (2)有点棘手。目前,我必须在 JPanel 周围的所有组件上注册事件。如果 JPanel 周围的邻居检测到鼠标移动事件,这也意味着 JPanel 处于 (2) 的情况。然而,这是一个相当肮脏的方法,当我将来添加新组件时,这个肮脏的解决方法将会被破坏。

另一种方法是使用计时器来监视 JPanel。如果鼠标位置在 x 秒内不在 JPanel 内,我可以认为 JPanel 发生了鼠标移出事件。

但是,这对我来说似乎也是一种肮脏的方式,因为使用单独的计时器来执行此类常见任务有点过分了。

有没有更好的方法,哪个Java平台可以提供?

最佳答案

让您的类实现 MouseListener 并将其添加为最外层面板上的鼠标监听器。当鼠标在面板上移动时,您应该收到鼠标进入事件,当鼠标离开面板时,您应该收到鼠标退出事件;无论面板包含什么组件。

来自 JavaDoc:

void mouseEntered(MouseEvent e) Invoked when the mouse enters a component.

void mouseExited(MouseEvent e) Invoked when the mouse exits a component.

关于java - 检测 JPanel 上的鼠标移动事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/861895/

相关文章:

javascript - 在 JavaScript 中确定鼠标指针位于哪个元素之上

java - 为什么从 Java 12 开始 JVM 启动速度更快

javascript - 在javascript中访问Java Map的键值对

java - 无需使用父类(super class)的导入即可获取字段值?

javascript - id 以自定义文本开头的所有按钮上的 JQuery 单击事件

events - 事件上的奇怪行为(Html.Events.on)

c++ - 有选择地忽略Qt中的鼠标事件

java - 如何使用 URL 和 2.x Java SDK 获取 S3 对象?

c# - "On Demand"动态实例化类的依赖注入(inject)

java - 如何在JAVA中添加鼠标监听器?