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

标签 java mouseevent awtrobot

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

这就是我将如何处理它的一般想法。

关于java - 如何让 java.awt.Robot 响应鼠标拖动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585457/

相关文章:

java - 检索 JSON 对象 Android

java - 我如何使用这个 Java GUI API 来绘制东西?

javascript - Paper JS 的编程点击事件

c# - 在 CLR 中 GetCursorPos 之后获取相对位置?

java - 使用 java.awt.Robot 测试键盘输入

java - 当使用 throws 关键字调用 void 时,所有抛出的错误都适用于我调用 void 的地方

屏幕中的 Java 客户端

java - 伯克利数据库 GAE

java - 在 Eclipse 中运行时,对我的代码的编辑不会显示

c++ - 尝试将鼠标按下和向上事件发送到 C++ 中的绘图 Canvas 应用程序/窗口