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

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

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

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

Из методов 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) { } }); 

Справка:

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

Взгляните на Component.getMousePosition .

Возвращает позицию указателя мыши в этом пространстве координат Component если Component находится непосредственно под указателем мыши, в противном случае возвращает значение null . Если Component не отображается на экране, этот метод возвращает значение null, даже если указатель мыши находится выше области, где будет отображаться Component . Если Component частично или полностью закрыт другими Component или родными windowsми, этот метод возвращает 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; } 

Вы можете добавить компонент 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); 

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

Interesting Posts
Давайте будем гением компьютера.