java - 在Java中,我的MouseMotionListener和MouseListener正在检测点击,但不检测移动

标签 java swing mouse

所以我正在创建一个java游戏,这里检测到了我的鼠标点击,但是mouseMoved根本没有运行。该方法中有一条永远不会运行的打印语句。我真的很困惑,因为由于点击是在整个窗口中注册的,所以鼠标运动不应该有任何问题。

鼠标是否依赖于其他任何东西,因为我真的不知道是什么原因造成的。

谢谢。

public class Mouse implements MouseListener, MouseMotionListener{

    private static int mouseX = -1;
    private static int mouseY = -1;
    private static int mouseB = -1;

    public static int getX(){
        return mouseX;
    }

    public static int getY(){
        return mouseY;
    }

    public static int getB(){
        return mouseB;
    }



    public void mouseMoved(MouseEvent e) {
        System.out.println("Mouse Moved");
        mouseX = e.getX();
        mouseY = e.getY();
    }

    public void mouseEntered(MouseEvent e) {}

    public void mouseExited(MouseEvent e) {}

    public void mousePressed(MouseEvent e) {
        mouseB = e.getButton();
        System.out.println(e.getX() + " " + e.getY());
    }

    public void mouseReleased(MouseEvent e) {
        mouseB = -1;
    }

    public void mouseDragged(MouseEvent e) {}
    public void mouseClicked(MouseEvent e) {

    }
}

这是我的游戏构造函数,它启动了一切。

public Game(){
        //cCursor();

        screen = new Screen(WIDTH, HEIGHT);
        mouse = new Mouse();
        keys = new Keyboard();
        //level = new RandomLevel(64, 64);
        level = Level.spawn;
        TileCoord pSpawn = new TileCoord(20,66);
        player = new Player(pSpawn.x(), pSpawn.y(), keys);
        player.init(level);

        addKeyListener(keys);
        addMouseListener(mouse);
    }

最佳答案

MouseMoitionListener 是与 MouseListener 不同的监听器,需要单独注册...

首先添加对 addMouseMotionListener 的调用

addMouseListener(mouse);
addMouseMotionListener(mouse);

看看How to Write a Mouse Listener了解更多详情

关于java - 在Java中,我的MouseMotionListener和MouseListener正在检测点击,但不检测移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28935663/

相关文章:

仅使用运行时异常的 Java 数据对象规范?

java - Java 中的多级(嵌套?)Jlist

Java 子菜单 ActionListener 无法正常工作

c++ - 在 Linux 中控制鼠标

mfc - 如何防止调用CComboBox::ShowDropDown后鼠标光标被隐藏?

c# - 同时检测鼠标左键和右键单击?

java - native Android 教程给出错误

java - Math.round() 方法的奇怪行为

java - 有没有一种方法可以在不使用递归的情况下比较列表中相对位置内的项目?

java - 如何在 java spinner 中将 1000 显示为 1.000