作者koalahong ()
看板java
标题[问题] mouseDraged event的怪现象
时间Thu May 15 01:23:09 2008
现在正在写一个用滑鼠拖拉画布上物件的程式发现了一个怪现象
想请问大家为什麽会这样
我往同一方向拖拉的时候发现物件会在滑鼠的位置和往回一段距离的地方来回闪动
code大概是这样的
// instance 为一Component物件
instance.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent evt) {
instanceMouseDragged(evt);
}
...
private void instanceMouseDragged(MouseEvent evt) {
//debug讯息印出与按键按下时的相对位置
System.out.printf("drag pos: %d %d\n", evt.getX(), evt.getY());
//计算物件新的位置
newPos.x = beanLastPos.x + evt.getX() - beanDis.x;
newPos.y = beanLastPos.y + evt.getY() - beanDis.y;
//把物件摆到新位置
Component target = evt.getComponent();
target.setLocation(newPos);
}
当我往右下拖动的时候照道理evt.getX()和evt.getY()的值都应该要一直累加的
但上面debug讯息的输出却会像下面这样
drag pos: 153 64
drag pos: 129 52
drag pos: 155 65
drag pos: 133 56
drag pos: 157 66
drag pos: 135 57
drag pos: 157 67
也就是说会莫名其妙被往回拉
想请问是什麽原因?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.67.167.126
1F:推 MOONRAKER:一直跳动往往是卡到某些boundary checking的结果 05/15 02:13
2F:推 Jichang:getX() 是相对座标 ... 可以 getScreenX() 试试看 ... 05/15 10:01