2012-10-12 22 views
7

Próbuję uzyskać pozycję myszy w panelu, tak jak w lewym górnym rogu panelu = x/y 0,0.Znajdowanie pozycji myszy względem panelu

To co mam w tej chwili daje pozycję na całym ekranie, więc współrzędne są różne w zależności od tego, gdzie panel (który jest w ramce) znajduje się na ekranie. Sądzę, że mógłbyś dodać do współrzędnych x/y, aby to uwzględnić, ale wydaje się to niechlujnym rozwiązaniem. Czy ktoś może pomóc?

Oto używane narzędzie mouseListener, które zostało dodane do panelu.

private class MouseListener extends MouseAdapter 
{ 
    public void mouseClicked(MouseEvent e) 
    { 
     // Finds the location of the mouse 
     PointerInfo a = MouseInfo.getPointerInfo(); 
     Point b = a.getLocation(); 

     // Gets the x -> and y co-ordinates 
     int x = (int) b.getX(); 
     int y = (int) b.getY(); 
     System.out.println("Mouse x: " + x); 
     System.out.println("Mouse y: " + y); 

     // Determines which tile the click occured on 
     int xTile = x/tileSize; 
     int yTile = y/tileSize; 

     System.out.println("X Tile: " + xTile); 
     System.out.println("Y Tile: " + yTile); 

    } 
} 

Odpowiedz

7

Zobacz MouseEvent.getPoint().

Powoduje zwrócenie pozycji x, y zdarzenia względem składnika źródłowego.

+1

Ty, panie, jesteś dżentelmenem i uczonym! – DMCH

3

Można użyć MouseEvent.getX() i MouseEvent.getY() uzyskać względne współrzędne X, Y & odpowiednio.

int relativeX = e.getX(); 
int relativeY = e.getY(); 
... 
+0

Działa również. Dziękuję Ci! – DMCH

Powiązane problemy