簡體   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