2

我正在编写一个类,它允许其他计算机上的用户控制 JPanel 的内容,以便在共享显示系统中使用。java.awt.Robot 将允许我执行鼠标单击和键盘输入,但它没有mouseDragged(MouseEvent evt)方法。我的客户有clientMouseReleased(和Pressed)方法作为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.mouseMoveRobot.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());
    }
}
4

1 回答 1

0

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

remoteDesktop需要保持鼠标的状态。

private boolean mouseDown = false;

然后,在鼠标按下和释放操作时,您需要适当地设置标志。

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

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

这就是我将如何去做的总体思路。

于 2010-08-27T15:18:52.610 回答