我无法使此MouseListener工作。为什么?单击鼠标没有任何反应

import acm.program.*;
import acm.graphics.*;
import java.awt.event.*;

/** Draws an oval whenever the user clicks the mouse */
public class DrawOvals extends GraphicsProgram implements MouseListener {
  public void run() {
    addMouseListener(this);
  }

  public void mouseClicked(MouseEvent e) {
    GOval oval = new GOval(100,100,OVAL_SIZE, OVAL_SIZE);
    oval.setFilled(true);
    add(oval, e.getX(), e.getY());
    System.out.println("Got here!");
  }

  /* Private constants */
  private static final double OVAL_SIZE = 20;

  /* implements the required methods for mouse listener*/
  public void mouseEntered(MouseEvent arg0) {
    // TODO Auto-generated method stub
  }

  public void mouseExited(MouseEvent arg0) {
    // TODO Auto-generated method stub
  }
}

最佳答案

根据您在OP中的注释中提供的链接,您必须致电

addMouseListeners();


代替

addMouseListener(this);


描述说:
“将GraphicsProgram本身用作侦听嵌入式GCanvas中发生的鼠标事件的方法。为此,学生要做的就是定义程序需要响应的任何侦听器方法,然后调用addMouseListeners(),该方法注册程序同时作为MouseListener和MouseMotionListener。”

另一种选择是使用

GCanvas canvas = getGCanvas();
canvas.addMouseListener(this);

关于java - MouseListener没有响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9694381/

10-10 06:36