Java-为什么我的运动算法有夸张的运动?

Java-为什么我的运动算法有夸张的运动?,java,swing,mouseevent,mouse,drag,Java,Swing,Mouseevent,Mouse,Drag,我正在尝试为swing组件实现一个拖动算法,在这里可以单击和拖动它们。然而,我的动作似乎方向正确,但过于夸张。如中所示,一点点鼠标移动会导致形状发生非常不相称的移动 以下是我确定移动的代码: xStart和yStart是第一次单击鼠标开始拖动的坐标 该组件有一个moveint-deltaX,int-delatY方法,它就是这样做的。直线组件的示例移动方法如下所示: @Override public void move(int dx, int dy) { this.x1 += dx;

我正在尝试为swing组件实现一个拖动算法,在这里可以单击和拖动它们。然而,我的动作似乎方向正确,但过于夸张。如中所示,一点点鼠标移动会导致形状发生非常不相称的移动

以下是我确定移动的代码:

xStart和yStart是第一次单击鼠标开始拖动的坐标

该组件有一个moveint-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值。

好吧,真正的问题是。细节是如何计算的?我实际上在几分钟前就计算出来了,但你的答案是正确的,所以我接受了。@Airhead谢谢。