在JPanel上检测鼠标移动事件

时间:2009-05-14 06:49:58

标签: java events mouse jpanel

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

(1)当鼠标移动时

(2)当鼠标移出时

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

另一种方法是使用计时器来监控JPanel。如果鼠标位置在x秒内不在JPanel内,我可以考虑让JPanel有鼠标移出事件。

然而,这对我来说似乎也是一种肮脏的方式,因为有一个单独的计时器来执行这样的常见任务是过度的。

Java平台可能提供更好的方法吗?

1 个答案:

答案 0 :(得分:6)

让您的类实现MouseListener并将其作为鼠标侦听器添加到最外面的面板上。当鼠标在面板上移动时,您应该获得鼠标输入事件,并在鼠标离开时退出鼠标;无论面板包含哪些组件。

来自JavaDoc:

  

void mouseEntered(MouseEvent e)            鼠标进入组件时调用。

     

void mouseExited(MouseEvent e)            鼠标退出组件时调用。