2010-08-27 64 views
2

我正在寫一個類,允許其他計算機上的用戶控制JPanel的內容,以用於共享顯示系統。 java.awt.Robot將允許我執行鼠標單擊和鍵盤輸入,但它沒有mouseDragged(MouseEvent evt)方法。我的客戶擁有clientMouseReleased(和Pressed)方法作爲MouseAdapter監聽器看起來像的一部分:java.awt.Robot如何響應鼠標拖動事件?

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()); 
    } 
} 

回答

0

好,高層次的想法是,你需要鼠標狀態添加到您的程序。

您的remoteDesktop將需要保持鼠標的狀態。

private boolean mouseDown = false; 

然後,在鼠標按下並釋放動作時,您需要適當地設置標誌。

然後,您需要在鼠標移動代碼中添加邏輯。

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

這是我如何去做的一般想法。