【问题标题】:MouseListener event not working in JavaMouseListener 事件在 Java 中不起作用
【发布时间】:2011-03-11 15:30:00
【问题描述】:

我正在创建一个应用程序,其中将在 JList 中显示图像列表。 每个图像都将显示为嵌入在面板中。当用户将光标移到图像上时,图像应在另一帧中放大显示。

现在,我在每个显示事件的面板上实现了 MouseListner 接口。我在每个面板上添加了 mouseListner()。

现在,当用户点击或移入或移出面板时......不会发生任何事件。

是不是因为当我点击图片时,其实是点击了JLabel,而不是直接点击面板?

还有什么其他原因?

【问题讨论】:

  • SSCCE 对解决这个问题非常有用。

标签: java swing mouseevent


【解决方案1】:

是不是因为我点击图片的时候,其实是点击了JLabel,而不是直接点击面板?

您实际上是在单击 JList。渲染器不是真正的组件。

您需要将 MouseListener 添加到 JList 中,然后使用 JList 的 indexToLocation(...) 方法确定单击了哪个渲染项。

编辑:

其实应该是 JList 的 locationToIndex(...) 方法。有时我的手指无法输入我的想法:)

【讨论】:

  • 我怎么知道点击了哪个项目??
  • 是的。你后来添加了它。谢谢你的帮助
【解决方案2】:

如果要捕获鼠标移动事件,则需要实现 MouseMotionListener 而不是 MouseListener。

【讨论】:

  • 但是 mouseExit 和 mouseEntered 函数是在 MouseListner 接口中定义的。它们是用来检查鼠标是否进入的??
  • 不,这是在 MouseMotionListener 中定义的,您需要将 mouseMotionListener 添加到您的组件而不是 mouseListener。
  • 是时候更认真地对待有关 SSCCE 的评论了。我们可以根据猜测对您的代码提出随机建议。但大多数值得听的人不喜欢猜测。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-20
  • 2014-09-30
  • 2014-01-30
  • 2014-10-23
相关资源
最近更新 更多