2012-10-12 123 views
7

Estoy tratando de ubicar el mouse dentro de un panel, como en la parte superior izquierda del panel = x/y 0,0.Buscar la posición del mouse relativo a un panel

Lo que tengo en el momento da la posición en toda la pantalla, por lo que dependiendo de dónde se encuentre el panel (que está en un marco) en la pantalla, las coordenadas son diferentes. Supongo que podrías agregar a las coordenadas x/y para dar cuenta de esto, pero esto parece una solución desordenada. ¿Alguien puede ayudar?

Aquí está el mouseListener que estoy usando, que se ha agregado al panel.

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

    } 
} 

Respuesta

7

Ver MouseEvent.getPoint().

Devuelve la posición x, y del evento en relación con el componente de origen.

+1

¡Usted, señor, es un caballero y un erudito! – DMCH

3

Puede utilizar MouseEvent.getX() y MouseEvent.getY() para obtener las coordenadas relativas de X & Y respectivamente.

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

También funciona. ¡Gracias! – DMCH

Cuestiones relacionadas