class InputStatus{
int mouseX;
int mouseY;
}
InputStatus inputStatus=new InputStatus();
private final MouseMotionListener mouseMotionListener = new MouseMotionListener() {
public void mouseMoved(MouseEvent e) {
synchronized (inputStatus) {
inputStatus.mouseX = e.getX();
inputStatus.mouseY = e.getY();
}
}
public void mouseDragged(MouseEvent e) {
synchronized (inputStatus) {
inputStatus.mouseX = e.getX();
inputStatus.mouseY = e.getY();
}
}
};
然后把mouseMotionListener给add到你的窗口或者控件上就行。
InputStatus是自己写的内部类,用于存放鼠标的位置,这样在其他地方就可以用inputStatus.mouseX和inputStatus.mouseY来取了。synchronized是为了万一你取坐标的代码在其他线程里(你那个线程也要synchronized (inputStatus)),可以确保每次mouseX和mouseY是成对写入和成对读出的。
当然如果你是单线程的应用的话,可以不要synchronize,然后去掉inputStatus相关的代码,类的成员变量这么写
int mouseX,mouseY;
然后处理函数这么写
public void mouseDragged(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
}
这样比较简单