現在正在寫一個用滑鼠拖拉畫布上物件的程式發現了一個怪現象
想請問大家為什麼會這樣
我往同一方向拖拉的時候發現物件會在滑鼠的位置和往回一段距離的地方來回閃動
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
推
05/15 02:13, , 1F
05/15 02:13, 1F
推
05/15 10:01, , 2F
05/15 10:01, 2F