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

标签 java swing mouseevent mouse drag

我正在尝试为 Swing 组件实现一种拖动算法,可以单击并拖动它们。然而,看起来我的 Action 方向是正确的,但却极其夸张。例如,鼠标的一点点移动都会导致形状发生非常不成比例的移动。

这是我确定运动的代码:

(xStartyStart 是第一次单击鼠标开始拖动的坐标)

该组件有一个 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 值等于您收到的最后一次鼠标事件后光标移动的变化,而不是最初单击形状时的变化上。

我建议创建一个 keyframeXkeyframeY 变量来存储上次鼠标事件 xy 值进行比较。

关于Java - 为什么我的运动算法有夸张的运动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47106749/

相关文章:

java - 浏览图像文件并使用 Java Swing 显示它

javascript - JavaScript 中的鼠标事件问题

c# - 如何使用 SendMessage() 发送鼠标 Action

java - 使用 Thread 和 Executor 实现快速 Java 线程的这两个片段之间的区别?

java - 单击鼠标后 JMenu 保持选中状态

java - 在 Google Glass 上显示拍摄的图像

java - JButton 上的动画 GIF,鼠标悬停时播放

java - 使用 JavaFX 在任何地方处理鼠标事件

java - 用递归方法求和值

java - 阐明 Java 对 Unicode 的进化支持