繁体   English   中英

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

[英]How can java.awt.Robot be made to respond to mouse drag events?

我正在编写一个类,该类将允许其他计算机上的用户控制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());
    }
}

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

您的remoteDesktop将需要保留鼠标的状态。

private boolean mouseDown = false;

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

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

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

那是我将如何处理的一般想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM