java - 鼠标侦听器不会引发错误但不会触发(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();
}
}
我怀疑但怀疑鼠标侦听器可能无法正常运行,因为它是在非静态方法中创建的,但我怀疑这就是问题所在。我尝试将声明移动到构造函数的开头,但这没有帮助。
解决方案
问题在于使用 Canvas 而不是 JPanel 作为超类。当我切换时,鼠标监听器开始触发。
推荐阅读
- jetty - Embedded Jetty:注册 ServletRequestListener 的 ServletContextListener
- common-lisp - Clisp :选择给定长度的子列表
- azure - Sharepoint REST api - 领域不是当前服务命名空间错误 50169 的配置领域
- angular - 无论您单击何处,Highchart 工具提示都会显示相同的值
- angular - 角 ngFor。如何有条件地显示标题?
- pip - conda activate env 不适用于 azure 批处理节点任务
- javascript - 使变量在其他函数中可用
- ruby - 如何在ruby中将变量插入格式化文本
- codenameone - 方向更改时,底部菜单无法正确拉伸/绑定
- c++ - VC++ 代码中的 ERROR_INVALID_PARAMETER & ERROR_CONNECTION_INVALID