Finding Mouse Position relative to a panel

15,558

Solution 1

See MouseEvent.getPoint().

Returns the x,y position of the event relative to the source component.

Solution 2

You can use MouseEvent.getX() and MouseEvent.getY() to get the relative co-ordinates of X & Y respectively.

int relativeX = e.getX();
int relativeY = e.getY();
...
Share:
15,558
DMCH
Author by

DMCH

Updated on June 15, 2022

Comments

  • DMCH
    DMCH almost 2 years

    I'm trying to get the mouse's position within a panel, as in the top left of the panel = x/y 0,0.

    What I have at the minute gives the position on the entire screen, so depending on where the panel (which is in a frame) is on the screen, the coordinates are different. I guess you could add to the x/y co-ordinates to account for this, but this seems like a messy solution. Can anyone help?

    Here's the mouseListener I'm using, which has been added to the 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);
    
        }
    }