java - 在 JPanel 中实现 MouseMotionListener

标签 java swing jpanel mouselistener mousemotionlistener

继续this question ,我在 JPanel 中实现一个 MouseMotionListener,以便我可以跟踪鼠标事件以传递到其中包含的对象。

这不起作用,所以我用 MouseMotionListener 实现了一个完全干净的 JPanel (它没有我的游戏面板上的其他东西),但仍然没有效果不工作。它只是在一个非常简单的 JFrameFlowLayout 中设置。

我用错了吗?我该如何触发鼠标事件?

JPanelMouseMotion 类:

import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.JPanel;

public class JPanelMouseMotion extends JPanel implements MouseMotionListener {

    private static final long serialVersionUID = 1L;

    public JPanelMouseMotion() {
        super();
    }

    @Override
    public void mouseDragged(MouseEvent e) {
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        System.out.println(e.getX() + " / " + e.getY());
    }

}

最佳答案

监听器永远不会被调用,因为它从未注册。您应该调用addMouseMotionListener注册它。

public class JPanelMouseMotion extends JPanel implements MouseMotionListener {

    private static final long serialVersionUID = 1L;

    public JPanelMouseMotion() {
        super();
        addMouseMotionListener(this); // register this JPanel as a Listener
    }

    @Override
    public void mouseDragged(MouseEvent e) {
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        System.out.println(e.getX() + " / " + e.getY());
    }

}

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

相关文章:

Java API - 云服务

java - 哪些对象符合 GC 条件?

java - 带有背景图像的透明 JTextfield

java - 公历 GUI - 问题

java - JPanel 从窗口消失

java - 多请求响应转发

java - 具有大量实体的规范和 XML 解析 -> 内存不足错误

java - 如何防止 JTable 单元格开始编辑某些击键?

java - 将 JLabel 放在 JPanel 中的组件上

java - 如何在 JPanel 中绘制形状?