2015-07-20 80 views
2

我正在Java中構建一個簡單的圖形應用程序,它要求我在2D圖形畫布內獲取鼠標位置。我使用了代碼MouseInfo.getPointerInfo().getLocation(),但它返回了相對於JFrame窗口而不是g2d畫布的鼠標位置。在JFrame中獲取鼠標位置考慮窗口邊界

例如,當我的鼠標光標位於g2d畫布上的座標(0,0)處時,由於窗口周圍有邊框,因此MouseInfo.getPointerInfo().getLocation()將返回(8,30)。

我可以只考慮偏移量,但每個操作系統的窗口邊框大小會發生變化。

我需要手動檢查操作系統和因素的邊界偏移,還是有更快的方法?

+0

本帖] (http://stackoverflow.com/questions/12465003/java-mouseevent-position-is-inaccurate)看起來像一個很好的解決你的問題。 –

+0

謝謝,約翰!該帖子的更新完全解決了我的問題。我需要使用以下代碼添加一個框架:'frame.getContentPane()。addMouseListener(listener);',然後用'evt.getPoint()獲取鼠標在事件監聽器中的位置' –

回答

0

使用此post解決了問題。我需要用這個辦法:

  1. 添加事件偵聽器:

    myJFrame.getContentPane().addMouseListener(listener); 
    
  2. 獲取鼠標事件函數中的鼠標位置:

    evt.getPoint()