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

我想实现,一边移动鼠标,一面显示坐标.实时更新.我试了好多次都不行.开始我先试在标签显示坐标,然后用addMouseMotionListener监听.不行后,我分别用JT... 我想实现,一边移动鼠标,一面显示坐标.实时更新.
我试了好多次都不行.
开始我先试在标签显示坐标,然后用addMouseMotionListener监听.
不行后,我分别用JTextField和JTextArea,都不能显示移动中的鼠标的坐标.
全部都只能显示初始0,0坐标.
能解释一下InputStatus 和synchronized这两处地方么
展开
 我来答
cloudee
2010-11-07 · TA获得超过262个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:181万
展开全部
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();
}
这样比较简单
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式