【问题标题】:Detecting vertical/horizontal mouse movement with java用java检测垂直/水平鼠标移动
【发布时间】:2013-07-28 02:41:05
【问题描述】:

我正在用 java 编写一个程序,该程序具有用户可以选择然后根据鼠标移动旋转或拉伸的图形对象。我快要开始工作了,但我遇到的问题是想办法让形状调整与鼠标移动自然配合。

我有一个 MouseListener 设置如下:

private class MouseHandler extends MouseAdapter
{
    public void mousePressed(MouseEvent e)
    {
         currentClickPoint = e.getPoint();
    }
}

MouseMotionListener 设置如下:

private class MouseMotionHandler extends MouseMotionAdapter
{
    public void mouseDragged(MouseEvent e)
    {
         objectRotateAngle = currentClickPoint.getY() - e.getY();
         objectWidth += currentClickPoint.getX() - e.getX();
    }
}

显然,这是一个简化版本,但问题是我希望鼠标向右移动时宽度增加,鼠标向左移动时宽度减小,以及旋转角度增加/减少基于垂直鼠标移动。现在,宽度不会开始减小,直到您通过 currentClickPoint 的 X 位置向左,反之亦然。基于鼠标 Y 移动进行旋转的问题是,每次您开始向上移动鼠标进行旋转时,角度都会重新设置为 0。

程序需要无缝响应方向的变化,而不是在调整开始时将宽度或角度设置为 0。有没有人为此目的检测鼠标移动方向的更好方法?

【问题讨论】:

    标签: java awt mouseevent mouselistener


    【解决方案1】:

    我建议存储原始鼠标位置(即用户第一次能够调整形状大小时的位置),然后通过直接添加当前位置和原始位置之间的差异来修改形状的宽度,或者通过缩放该差异然后添加它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多