java - Java 中的中央 MouseMotionListener

标签 java swing mousemotionlistener

我在我的 JFrame 中添加了一个 MouseMotionListener 来控制从我的 jframe 中的所有对象到达的所有鼠标运动消息,但是当我将鼠标移到 JLayeredPane 上时,没有产生任何消息。请帮助我在我的 JFrame 中添加一个中央 MouseMotionListener 以控制来自其中所有对象的所有消息。

非常感谢。

最佳答案

下面是递归地向所有组件添加 MouseMotionListener 的代码。请注意,为了处理生成的 MouseEvent,您需要使用 SwingUtilities 将 Point 从特定组件的空间转换到 JFrame 的空间。

public static void installMouseMotionListenerOnAll(Component c, MouseMotionListener mml) {
  c.addMouseMotionListener(mml);
  if (c instanceof Container) {
    for (Component child : ((Container)c).getComponents()) {
      installMouseMotionListenerOnAll(child, mml);
    }
  }
}

关于java - Java 中的中央 MouseMotionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37485677/

相关文章:

java - 使用 veracode 工具的代码中的安全漏洞

java - 我应该如何使用 guava TypeToken 反射性地实例化参数化类型?

java - 在我的代码中 BufferedReader 的 mark(0) 和 reset() 不起作用

java - JFileChooser 和 eclipse

java - 在Java中,repaint()不会调用paintComponent()

java - 公共(public)共享首选项导致应用程序崩溃

java swing面板问题

java - 拖动会禁用其他 MouseMotionListener

java - 在Java中,如何从鼠标位置开始拖动图像?

java - 如何通过快速拖动鼠标光标绘制重复椭圆的连续曲线?