【问题标题】:Detect Mouse Move Event On JPanel在JPanel上检测鼠标移动事件
【发布时间】:2009-05-14 06:49:58
【问题描述】:

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

(1)鼠标移入时

(2)鼠标移出时

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

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

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

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

【问题讨论】:

    标签: java events mouse jpanel


    【解决方案1】:

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

    来自 JavaDoc:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 2011-01-27
      • 2016-04-22
      • 2014-06-26
      • 1970-01-01
      相关资源
      最近更新 更多