继续this question ,我在 JPanel
中实现一个 MouseMotionListener
,以便我可以跟踪鼠标事件以传递到其中包含的对象。
这不起作用,所以我用 MouseMotionListener
实现了一个完全干净的 JPanel
(它没有我的游戏面板上的其他东西),但仍然没有效果不工作。它只是在一个非常简单的 JFrame
和 FlowLayout
中设置。
我用错了吗?我该如何触发鼠标事件?
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/