2012-10-12 20 views
7

Sto cercando di ottenere la posizione del mouse all'interno di un pannello, come nella parte in alto a sinistra del pannello = x/y 0,0.Individuazione della posizione del mouse relativa a un pannello

Quello che ho al minuto dà la posizione su tutto lo schermo, quindi a seconda di dove il pannello (che è in una cornice) è sullo schermo, le coordinate sono diverse. Immagino che potresti aggiungere alle coordinate x/y per tener conto di ciò, ma questa sembra una soluzione disordinata. Qualcuno può aiutare?

Ecco il mouseListener che sto utilizzando, che è stato aggiunto al pannello.

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

    } 
} 

risposta

7

Vedere MouseEvent.getPoint().

Restituisce la posizione x, y dell'evento relativo al componente di origine.

+1

Lei, signore, sono un gentiluomo e uno studioso! – DMCH

3

È possibile utilizzare MouseEvent.getX() e MouseEvent.getY() per ottenere, rispettivamente, le relative coordinate di X & Y.

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

Funziona anche. Grazie! – DMCH