2012-07-11 60 views
4

內光標的設置地點我有一個使用下面的代碼的程序:的JFrame

public void mouseMoved(MouseEvent e) { 
    mousex = e.getX(); 
    mousey = e.getY(); 

    if(mousex >= 700) { 
     try { 
      Robot robot = new Robot(); 

      robot.mouseMove(0, 0); 
     } catch (AWTException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 

    } 
    if(mousex <= 100) { 
     Robot robot; 
     try { 
      robot = new Robot(); 
      robot.mouseMove(0, 0); 
     } catch (AWTException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 

    } 
} 

,除了一件事所有這一切都工作正常。它將光標的位置設置在屏幕上而不是jframe上。另外,當我說如果(mousex> = 700)它也從屏幕上得到它。我需要知道如何將它改爲jframe。謝謝。

回答

3

獲取在屏幕上JFrame的位置,只是相應的翻譯你的鼠標位置。所有擴展組件的對象(包括JFrame)都有方法getLocationOnScreen()。再次,使用此方法,獲取JFrame的位置,然後查找鼠標的相對位置,無論它在哪裏,還是在哪裏。

這可以用小學代數來解決。

編輯
在需要的時候,而不是重新創建它每一次你可能希望只是一次打造你的機器人對象,並簡單地使用對象。

3

事情,你可以得到的,

  1. 的JFrame在屏幕上的位置的。
  2. 一旦你知道了屏幕上的位置,你可以添加這些(x,y)並獲得你的JFrame中的新位置。
  3. 如果計算後的位置是超過JFrame大小然後設置x或y來的JFrame最大電流大小(如果共祝是完全動態的)

目視這樣的事情,

enter image description here

在上述圖像上的屏幕JFrame的位置是(50,50),這意味着這些座標成爲(0,0)爲JFrame內部組件。現在在屏幕上獲取鼠標位置在JFrame之內,你可以只說一些JFrame中的隨機想要的座標,而不是將這些屏幕位置50添加進去。