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

用java检测垂直/水平鼠标移动,java,awt,mouseevent,mouselistener,Java,Awt,Mouseevent,Mouselistener,我正在用java编写一个程序,该程序具有图形对象,用户可以选择这些对象,然后根据鼠标移动进行旋转或拉伸。我马上就要开始工作了,但我遇到的问题是找到一种方法来调整形状,使其与鼠标移动自然配合 我有一个鼠标听器设置了这样的东西: private class MouseHandler extends MouseAdapter { public void mousePressed(MouseEvent e) { currentClickPoint = e.getPoin

我正在用java编写一个程序,该程序具有图形对象,用户可以选择这些对象,然后根据鼠标移动进行旋转或拉伸。我马上就要开始工作了,但我遇到的问题是找到一种方法来调整形状,使其与鼠标移动自然配合

我有一个鼠标听器设置了这样的东西:

private class MouseHandler extends MouseAdapter
{
    public void mousePressed(MouseEvent e)
    {
         currentClickPoint = e.getPoint();
    }
}
private class MouseMotionHandler extends MouseMotionAdapter
{
    public void mouseDragged(MouseEvent e)
    {
         objectRotateAngle = currentClickPoint.getY() - e.getY();
         objectWidth += currentClickPoint.getX() - e.getX();
    }
}
MouseMotionListener设置如下内容:

private class MouseHandler extends MouseAdapter
{
    public void mousePressed(MouseEvent e)
    {
         currentClickPoint = e.getPoint();
    }
}
private class MouseMotionHandler extends MouseMotionAdapter
{
    public void mouseDragged(MouseEvent e)
    {
         objectRotateAngle = currentClickPoint.getY() - e.getY();
         objectWidth += currentClickPoint.getX() - e.getX();
    }
}
显然,这是一个简化版本,但问题是,我希望鼠标向右移动时宽度增加,向左移动时宽度减小,以及基于垂直鼠标移动增加/减少旋转角度。现在,宽度不会开始减小,直到您通过当前ClickPoint的X位置向左移动,反之亦然。基于鼠标Y移动进行旋转的问题是,每次开始向上移动鼠标进行旋转时,角度都会设置回0


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

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