如何使java.awt.Robot响应鼠标拖动事件?

如何使java.awt.Robot响应鼠标拖动事件?,java,mouseevent,awtrobot,Java,Mouseevent,Awtrobot,我正在编写一个类,它允许其他计算机上的用户控制JPanel的内容,以便在共享显示系统中使用。Robot将允许我执行鼠标点击和键盘输入,但它没有mouseDragged(MouseEvent evt)方法。我的客户端有clientmouseerelease(和按下)方法作为MouseAdapter侦听器的一部分,这些方法看起来像: private void clientMouseReleased(java.awt.event.MouseEvent evt) { try {

我正在编写一个类,它允许其他计算机上的用户控制JPanel的内容,以便在共享显示系统中使用。Robot将允许我执行鼠标点击和键盘输入,但它没有
mouseDragged(MouseEvent evt)
方法。我的客户端有
clientmouseerelease
(和
按下
)方法作为
MouseAdapter
侦听器的一部分,这些方法看起来像:

private void clientMouseReleased(java.awt.event.MouseEvent evt)
{
    try
    {
        switch (evt.getButton())
        {
            case 1:
                remoteDesktop.mouseRelease(evt.getX(), evt.getY(), InputEvent.BUTTON1_MASK);
                break;
            case 2:
                remoteDesktop.mouseRelease(evt.getX(), evt.getY(), InputEvent.BUTTON2_MASK);
                break;
            case 3:
                remoteDesktop.mouseRelease(evt.getX(), evt.getY(), InputEvent.BUTTON3_MASK);
                break;
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
        JOptionPane.showMessageDialog(this, e.getMessage());
    }
}
其中,
remoteDesktop
是一个包含java.awt.Robot的类,它在客户端调用的方法中执行
Robot.mouseMove
Robot.mouseRelease
(或
Robot.mousePress
)。我希望能够以相同的方式编写
mouseDragged
,例如:

private void clientMouseDragged(java.awt.event.MouseEvent evt)
{
    try
    {
        switch (evt.getButton())
        {
            case 1:
                remoteDesktop.mouseDragged(evt.getX(), evt.getY(), InputEvent.BUTTON1_MASK);
                break;
            case 2:
                remoteDesktop.mouseDragged(evt.getX(), evt.getY(), InputEvent.BUTTON2_MASK);
                break;
            case 3:
                remoteDesktop.mouseDragged(evt.getX(), evt.getY(), InputEvent.BUTTON3_MASK);
                break;
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
        JOptionPane.showMessageDialog(this, e.getMessage());
    }
}

好的,高层次的想法是,您需要将鼠标状态添加到您的程序中

您的
remoteDesktop
需要保持鼠标的状态

private boolean mouseDown = false;
然后,在鼠标按下并释放动作时,您需要适当设置标志

然后,需要在鼠标移动代码中添加逻辑

if (mouseDown) 
    handelDrag();
else 
    handleMove();

这是我将如何进行的一般想法。

好吧,高层次的想法是您需要将鼠标状态添加到程序中

您的
remoteDesktop
需要保持鼠标的状态

private boolean mouseDown = false;
然后,在鼠标按下并释放动作时,您需要适当设置标志

然后,需要在鼠标移动代码中添加逻辑

if (mouseDown) 
    handelDrag();
else 
    handleMove();
这是我将如何处理这件事的一般想法