我有一个 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/