0

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

(1) 当鼠标移入时

(2)当鼠标移出时

(1) 快速简单。(2) 有点棘手。目前,我必须在 JPanel 周围的所有组件中注册事件。如果JPanel周围的邻居检测到鼠标移动事件,这也意味着JPanel处于(2)情况。但是,这是一个相当肮脏的过程,因为我将来会添加新组件,这种肮脏的解决方法将被打破。

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

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

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

4

1 回答 1

6

让您的类实现 MouseListener 并将其添加为最外面的面板上的鼠标侦听器。当鼠标移到面板上时,你应该得到一个 mouse-entered 事件,当它离开时,你应该得到一个 mouse-exited 事件;无论面板包含什么组件。

来自 JavaDoc:

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

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

于 2009-05-14T06:54:55.080 回答