求救Java 鼠标移动获取坐标问题.

2024-11-01 07:57:39
推荐回答(1个)
回答1:

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();
}
这样比较简单