使用java检测垂直/水平鼠标移动

时间:2013-07-28 04:02:33

标签: java awt mouseevent mouselistener

我正在用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。为此目的,有没有人有更好的方法来检测鼠标移动的方向?

1 个答案:

答案 0 :(得分:0)

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