我无法让这个 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 - 鼠标监听器没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9694381/