2012-10-12 2 views
7

Я пытаюсь получить положение мыши внутри панели, как в левом верхнем углу панели = x/y 0,0.Поиск положения мыши относительно панели

То, что у меня есть, дает позицию на весь экран, поэтому в зависимости от того, где находится панель (которая находится в кадре), координаты разные. Я думаю, вы могли бы добавить к координатам x/y для учета этого, но это похоже на беспорядочное решение. Может ли кто-нибудь помочь?

Здесь используется mouseListener, который был добавлен в панель.

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

    } 
} 

ответ

7

См. MouseEvent.getPoint().

Возвращает положение x, y события относительно исходного компонента.

+1

Вы, сэр, являются джентльменом и ученым! – DMCH

3

Вы можете использовать MouseEvent.getX() и MouseEvent.getY() получить относительные координаты X & Y соответственно.

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

Также работает. Спасибо! – DMCH

Смежные вопросы