gpt4 book ai didi

java - 鼠标监听器不会引发错误,但不会触发(java)

转载 作者:行者123 更新时间:2023-12-01 16:29:48 24 4
gpt4 key购买 nike

我正在跟踪我在 geeksforgeeks 上找到的代码但鼠标监听器没有触发。我怀疑 runnable 的实现以某种方式锁定了对我的板对象的访问,但我不确定。我的处境与this post的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();
}
}

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

最佳答案

事件只会在具有焦点的组件上注册。在您的程序中,这是您的主面板,即 Game 类。因此,快速解决方法就是更改:

 jf.addMouseListener(this);

addMouseListener(this);

但是您应该将监听器添加到您可能想要获取事件的任何组件,即主面板、内容 Pane 和 jframe。

关于java - 鼠标监听器不会引发错误,但不会触发(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62072681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com