【发布时间】:2016-03-17 21:36:21
【问题描述】:
我想在 Java 中创建一个实现 mouseDragged 方法的 MouseMotionListener,因此它只关心对角鼠标的移动。
我尝试通过保存旧的 X/Y 并将其与新的 X/Y 进行比较来计算鼠标位置的斜率,如下所示:
public void mouseDragged(MouseEvent e) {
int deltaX = e.getX() - oldX;
int deltaY = e.getY() - oldY;
if (deltaX != 0) {
int slope = deltaY / deltaX;
if (slope == 1 || slope == -1) {
draggedHookPoint.setDraggedPosition(e);
}
}
}
oldX = e.getX();
oldY = e.getY();
}
我遇到的问题是 oldX 和 oldY 总是与新值相同。我想也许在方法结束时保存值会起作用。 我应该如何保存这些值?有更好的方法吗?
编辑:所以 oldX 和 oldY 并不总是相同的,我更改了代码以查找
slope == -1 || slope == 1 ,但问题是它仍然接受一些似乎不是对角线的鼠标时刻。
【问题讨论】:
-
你愿意接受什么样的误差范围?鼠标不可能精确地垂直或水平移动而不在另一个方向上移动
-
@madprogrammer 可能.. 减 1。我只想将鼠标运动逻辑限制为在任何方向接近 45 度线时。
-
尝试计算两点(新旧)之间的角度,这样会更容易
标签: java mouseevent motion