Java 在JPanel中实现MouseMotionListener

Java 在JPanel中实现MouseMotionListener,java,swing,jpanel,mouselistener,mousemotionlistener,Java,Swing,Jpanel,Mouselistener,Mousemotionlistener,继续从开始,我在我的JPanel中实现了一个MouseMotionListener,这样我就可以跟踪鼠标事件以传递到其中包含的对象 这不起作用,所以我用一个MouseMotionListener实现了一个完全干净的JPanel(它没有我的游戏面板上的其他东西),但仍然不起作用。它只是用一个非常简单的JFrame和FlowLayout进行设置 我用错了吗?我该如何触发鼠标事件 JPanelMouseMotionclass: import java.awt.event.MouseEvent; imp

继续从开始,我在我的
JPanel
中实现了一个
MouseMotionListener
,这样我就可以跟踪鼠标事件以传递到其中包含的对象

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

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

JPanelMouseMotion
class:

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());
    }

}

侦听器从未被调用,因为它从未被注册。你应该打电话登记

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());
    }

}