Cómo obtener la ubicación de un clic del mouse en relación con una ventana giratoria

Digamos que estoy en un Java Swing JFrame. Hago clic en mi mouse Quiero obtener la ubicación del clic del mouse dentro de la GUI . En java, la línea

int mouseX = MouseInfo.getPointerInfo().getLocation.x; 

Parece dar la ubicación del mouse en toda la pantalla. ¿Cómo obtendría su ubicación relativa a la GUI?

Desde los métodos de MouseListener puedes hacer:

 @Override public void mouseClicked(MouseEvent e) { int x=e.getX(); int y=e.getY(); System.out.println(x+","+y);//these co-ords are relative to the component } 

Simplemente agregue esto a su Component de la siguiente manera:

 component.addMouseListener(new MouseListener() { @Override public void mouseClicked(MouseEvent e) { } }); 

Referencia:

  • Cómo escribir un oyente de ratón

Eche un vistazo a Component.getMousePosition .

Devuelve la posición del puntero del mouse en el espacio de coordenadas de este Component si el Component está directamente debajo del puntero del mouse; de ​​lo contrario, devuelve null . Si el Component no se muestra en la pantalla, este método devuelve nulo incluso si el puntero del mouse está sobre el área donde se mostraría el Component . Si el Component está oscurecido parcial o totalmente por otros Component o ventanas nativas, este método devuelve un valor no null solo si el puntero del mouse se encuentra sobre la parte no obstruida del Component .

 final Point mousePos = component.getMousePosition(); if (mousePos != null) { final int mouseX = mousePos.x; final int mouseY = mousePos.y; ... } 

… o, si usa MouseListener , puede ver mi comentario original …

Intenta usar MouseEvent.getPoint .

Lo anterior devolverá el punto del mouse relativo al componente al que estaba enlazado el oyente.

 public void mouseClicked(final MouseEvent evt) { final Point pos = evt.getPoint(); final int x = pos.x; final int y = pos.y; } 

Puede agregar MouseListener al componente de la GUI cuyo píxel superior izquierdo debería estar amenazado como [0,0] punto, y obtener xey de MouseEvent

 JFrame frame = new JFrame(); JPanel panel = new JPanel(); frame.add(panel); panel.addMouseListener(new MouseAdapter() {// provides empty implementation of all // MouseListener`s methods, allowing us to // override only those which interests us @Override //I override only one method for presentation public void mousePressed(MouseEvent e) { System.out.println(e.getX() + "," + e.getY()); } }); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(200, 200); frame.setVisible(true); 

MouseEvent tiene los métodos getX () y getY () que devuelven la posición relativa al componente fuente.