首页 > 解决方案 > 鼠标侦听器不会引发错误但不会触发(java)

问题描述

我正在关注我在geeksforgeeks上找到的代码,但鼠标监听器没有触发。我怀疑 runnable 的实现以某种方式锁定了对我的板对象的访问,但我不确定。我在与这篇文章的 OP 类似的船上。

public class Game extends Canvas implements MouseListener {

    JFrame jf = new JFrame();

    Game() {
        jf.getContentPane().add(this, BorderLayout.CENTER);
        jf.setSize(new Dimension(500,500+30));
        jf.setVisible(true);
        jf.addMouseListener(this);
    }

    public void mouseClicked(MouseEvent e){
        System.out.println("Hello World!");
    }

    public void mousePressed(MouseEvent e){}

    public void mouseReleased(MouseEvent e){}

    public void mouseEntered(MouseEvent e){}

    public void mouseExited(MouseEvent e){}

    public static void main(String[] args){
        Game game = new Game();
    }
}

我怀疑但怀疑鼠标侦听器可能无法正常运行,因为它是在非静态方法中创建的,但我怀疑这就是问题所在。我尝试将声明移动到构造函数的开头,但这没有帮助。

标签: javaswingdebuggingawtmouselistener

解决方案


问题在于使用 Canvas 而不是 JPanel 作为超类。当我切换时,鼠标监听器开始触发。


推荐阅读