【发布时间】:2016-07-03 03:23:20
【问题描述】:
所以我有一个名为contentPanel 的JPanel,它包含2 个内部容器。第一个是scorePanel,它包含几个按钮、一个滑块和一个标签。另一个是buttonPanel,它是一个 JButton 网格。
在我的contentPanel 类中,我实现了MouseMotionListener 接口并将这个监听器添加到buttonPanel 调用按钮。
我遇到的问题是 mouseMoved 方法永远不会被调用,当鼠标悬停在按钮上时我无法获取鼠标坐标。相反,如果我将侦听器添加到每个按钮,我会获得鼠标坐标,但仅当它们与悬停在其中的按钮的原点相关时。此外,如果我将侦听器添加到 contentPanel,我会从该容器的原点获取鼠标坐标,但它不会触发按钮上的事件。
谁能解释一下如何缓解这个问题并从按钮面板的原点获取鼠标坐标而没有 JButton 阻塞?
蒂亚。
*更新:* 我进行了一项更改,使我正在寻求的正确行为成为可能,但只有一个警告。我将GridLayout 中按钮之间的填充空间调整为 15px,现在当鼠标进入这些中间区域时,mouseEvent 触发。这将实现与我所寻求的相同的效果。
【问题讨论】:
-
可能有一个或多个组件(如
JButtons)在鼠标事件到达您的容器之前就已经消耗了它们。您能否详细说明您希望通过MouseMotionListener实现的目标? -
@MadProgrammer 我正在尝试获取鼠标到按钮网格中任何指定按钮中心的距离。您能否解释一下按钮如何消耗鼠标事件以及可能的解决方案?
-
JButton's 有MouseListeners,由于这些工作方式,它们消耗鼠标事件,因此它们下面的任何东西都不会被通知