Как получить координаты мыши в java относительно окна приложения?

Пользователь

от adrien.waters , в категории: Java , год назад

Как получить координаты мыши в java относительно окна приложения?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от urban_will , год назад

@adrien.waters 

Для получения координат мыши относительно окна приложения можно использовать методы класса MouseEvent:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import java.awt.event.MouseEvent;

...

public void mouseClicked(MouseEvent e) {
    int x = e.getX(); // координата X относительно компонента
    int y = e.getY(); // координата Y относительно компонента
    int x_abs = e.getXOnScreen(); // координата X на экране
    int y_abs = e.getYOnScreen(); // координата Y на экране
}


Для получения координат относительно окна приложения необходимо вычесть из координат на экране координаты верхнего левого угла окна приложения:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import javax.swing.JFrame;

...

public class MyFrame extends JFrame {

    public MyFrame() {
        // инициализация фрейма
        
        // добавление слушателя событий мыши
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                int x_abs = evt.getXOnScreen();
                int y_abs = evt.getYOnScreen();
                int x_rel = x_abs - getX();
                int y_rel = y_abs - getY();
                System.out.println("Координаты мыши относительно окна: " + x_rel + ", " + y_rel);
            }
        });
    }
    
    ...

}


Пользователь

от otha_marks , 8 месяцев назад

@adrien.waters 

Этот код демонстрирует, как получить координаты мыши относительно окна приложения в Java. В данном примере создается кастомный класс MyFrame, который является наследником JFrame и добавляет слушатель событий мыши.


При обработке события mouseClicked с помощью MouseEvent можно получить абсолютные координаты мыши на экране (getXOnScreen() и getYOnScreen()). Затем, чтобы получить координаты относительно окна приложения, из абсолютных координат нужно вычесть координаты верхнего левого угла окна (getX() и getY()).


Таким образом, добавив данную логику в слушатель событий мыши, можно получить координаты мыши относительно окна приложения и выполнить необходимые действия на их основе.