好的,所以我做了一个完全正常的应用程序,并且遇到了MouseMotion和MouseMotionListener的问题:我的Canvas中根本没有调用它们。我认为这是我添加Canvas到框架的东西,但我创建了这个测试程序并且非常惊讶:
import java.applet.Applet;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseEvent;
import java.awt.Graphics;
public class testapp extends Applet implements MouseMotionListener {
int x = 40;
public void mouseMoved(MouseEvent e) {
showStatus("mouse moved");
}
public void mouseDragged(MouseEvent e) {
showStatus("mouse dragged");
x++;
repaint();
}
public void paint(Graphics g) {
g.drawString("Hello World!", 40, x); //x SHOULD move it down! ugh...
}
}
所以我使用BlueJ的漂亮的Applet跑步者来运行它,当我点击并拖动鼠标时x不会增加!当我实现MouseListener并尝试在其中一个实现的方法中增加一个变量时,会发生同样的情况。
我应该重启电脑吗?我的JDK版本坏了吗? (如果这是一个已知错误,我有Java 7)
现在,我非常困惑,我有一项任务需要明天的方法,所以任何帮助都非常感谢。谢谢!
答案 0 :(得分:2)
你不能只实现一个监听器。你还必须注册它。您的Applet实际上并不知道此时甚至存在MouseListener。
由于这是作业,请查看http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html。
答案 1 :(得分:2)
您没有使用侦听器注册该组件。也许你可以试试这个:
public void init(){
addMouseMotionListener(this);
}