Подтвердить что ты не робот

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

Скажем, что я нахожусь в Java Swing JFrame. Я нажимаю на мышь. Я хочу получить местоположение щелчка мыши в графическом интерфейсе. В java строка

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

Кажется, нужно указать местоположение мыши на весь экран. Как мне получить его по отношению к графическому интерфейсу?

4b9b3361

Ответ 1

Из MouseListener методов, которые вы можете сделать:

@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
}

Просто добавьте это в свой Component:

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

Справка:

Ответ 2

Посмотрите Component.getMousePosition.

Возвращает позицию указателя мыши в этом пространстве координат Component, если Component находится непосредственно под указателем мыши, в противном случае возвращает null. Если Component не отображается на экране, этот метод возвращает значение null, даже если указатель мыши находится над областью, где будет отображаться Component. Если Component частично или полностью закрыт другими Component или родными окнами, этот метод возвращает значение не null, только если указатель мыши находится над незакрашенной частью Component.

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

... или, если вы используете MouseListener, вы можете увидеть мой оригинальный комментарий...

Попробуйте использовать MouseEvent.getPoint.

Вышеупомянутое вернет точку мыши относительно компонента, к которому был привязан слушатель.

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

Ответ 3

Вы можете добавить компонент MouseListener в GUI, верхний левый пиксель которого должен быть создан как [0,0], и получить x и y из 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);

Ответ 4

MouseEvent имеет методы getX() и getY(), которые возвращают позицию относительно исходного компонента.