我正在尝试为 Swing 组件实现一种拖动算法,可以单击并拖动它们。然而,看起来我的 Action 方向是正确的,但却极其夸张。例如,鼠标的一点点移动都会导致形状发生非常不成比例的移动。
这是我确定运动的代码:
(xStart
和 yStart
是第一次单击鼠标开始拖动的坐标)
该组件有一个 move(int deltaX, int delatY)
方法来执行此操作。线组件的示例移动方法如下所示:
@Override
public void move(int dx, int dy) {
this.x1 += dx;
this.y1 += dy;
this.x2 += dx;
this.y2 += dy;
}
move方法的调用方式如下,其中e
是鼠标拖动事件:
currentShape.move(e.getX() - (int) xStart, e.getY() - (int) yStart);
最佳答案
您希望您的 dx
dy
值等于您收到的最后一次鼠标事件后光标移动的变化,而不是最初单击形状时的变化上。
我建议创建一个 keyframeX
和 keyframeY
变量来存储上次鼠标事件 x
和 y
值进行比较。
关于Java - 为什么我的运动算法有夸张的运动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47106749/