Java получить координаты курсора мыши
Модератор: Модераторы разделов
-
zshgm
- Сообщения: 311
- ОС: Debian
Java получить координаты курсора мыши
Как на Java получить координаты курсора мыши в linux? (Глобально а не только в своем приложении)
newblog.kz - заработай на своих статьях :)
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Java получить координаты курсора мыши
Если имееются ввиду координаты относительно левого верхнего угла экрана, то это можно сделать через функцию MouseEvent.getLocationOnScreen().
-
zshgm
- Сообщения: 311
- ОС: Debian
Re: Java получить координаты курсора мыши
kamre писал(а): ↑06.08.2009 19:11
Если имееются ввиду координаты относительно левого верхнего угла экрана, то это можно сделать через функцию MouseEvent.getLocationOnScreen().
Чет не работает, подскажите что не так..
import java.awt.event.MouseEvent;
public class main2 {
public static void main(String[] args) {
System.out.println(MouseEvent.getLocationOnScreen().x);
}
}
выдает оошибку:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot make a static reference to the non-static method getLocationOnScreen() from the type MouseEvent
newblog.kz - заработай на своих статьях :)
-
Warlornhor
- Сообщения: 428
- ОС: openSUSE 12.3
Re: Java получить координаты курсора мыши
Вольный перевод: "Ты что делаешь?! Хочешь чтобы я так сразу без ссылки на объект тебе этот метод вызвал? Он не статический!!! Сначала нужен instance объекта класса java.awt.event.MouseEvent, а потом уж у него и вызывай этот метод." Как то так.
-
zshgm
- Сообщения: 311
- ОС: Debian
Re: Java получить координаты курсора мыши
Warlornhor писал(а): ↑08.08.2009 10:02Вольный перевод: "Ты что делаешь?! Хочешь чтобы я так сразу без ссылки на объект тебе этот метод вызвал? Он не статический!!! Сначала нужен instance объекта класса java.awt.event.MouseEvent, а потом уж у него и вызывай этот метод." Как то так.
public class main2 {
public static void main(String[] args) {
MouseEvent mevent = null;
System.out.println(mevent.getLocationOnScreen().getX());
}
}
а как его правильно инициализировать??
приведите пжлста примерчик..
newblog.kz - заработай на своих статьях :)
-
Warlornhor
- Сообщения: 428
- ОС: openSUSE 12.3
-
zshgm
- Сообщения: 311
- ОС: Debian
Re: Java получить координаты курсора мыши
на другом форуме подсказали что можно так:
Point location = MouseInfo.getPointerInfo().getLocation();
double x = location.getX();
double y = location.getY();
System.out.println("x = " + x);
System.out.println("y = " + y);
Работает как нужно в java 5, но нужно тоже самое в java 4
Обновить до новой версии не получится, так как комп на отором нужно выполнить - удаленный и не имеет доступ к репазиториям. Есть ли какие-нибудь аналоги для старой java ? или раньше нельзя было получить координаты мыши 
Point location = MouseInfo.getPointerInfo().getLocation();
double x = location.getX();
double y = location.getY();
System.out.println("x = " + x);
System.out.println("y = " + y);
Работает как нужно в java 5, но нужно тоже самое в java 4
newblog.kz - заработай на своих статьях :)
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Java получить координаты курсора мыши
zshgm писал(а): ↑08.08.2009 16:31Работает как нужно в java 5, но нужно тоже самое в java 4Обновить до новой версии не получится, так как комп на отором нужно выполнить - удаленный и не имеет доступ к репазиториям. Есть ли какие-нибудь аналоги для старой java ? или раньше нельзя было получить координаты мыши
Может быть через этот метод получится: SwingUtilities.convertPointToScreen.
-
zshgm
- Сообщения: 311
- ОС: Debian
Re: Java получить координаты курсора мыши
kamre писал(а): ↑08.08.2009 21:09zshgm писал(а): ↑08.08.2009 16:31Работает как нужно в java 5, но нужно тоже самое в java 4Обновить до новой версии не получится, так как комп на отором нужно выполнить - удаленный и не имеет доступ к репазиториям. Есть ли какие-нибудь аналоги для старой java ? или раньше нельзя было получить координаты мыши
Может быть через этот метод получится: SwingUtilities.convertPointToScreen.
convertPointToScreen
public static void convertPointToScreen(Point p, Component c)
Convert a point from a component's coordinate system to screen coordinates.
Parameters:
p - a Point object (converted to the new coordinate system)
c - a Component object
- а что в качестве компонента указывать?
newblog.kz - заработай на своих статьях :)
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Java получить координаты курсора мыши
Создаем компонент, добавляем MouseMotionListener. При движении мышки внутри компонента получим событие с координатами внутри компонента. А с помощью вышеуказанной функции можно эти координаты перевести в экранные.
Примерно вот так:
Код: Выделить всё
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
@SuppressWarnings("serial")
public class MouseScreenCoords extends JFrame {
public MouseScreenCoords() {
super("Mouse Screen Coordinates");
addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
Point p = new Point(e.getPoint());
System.out.println("Component coords: x = " + p.x + ", y = " + p.y);
SwingUtilities.convertPointToScreen(p, MouseScreenCoords.this);
System.out.println("Screen coords: x = " + p.x + ", y = " + p.y);
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 150);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MouseScreenCoords();
}
});
}
}Спасибо сказали:
-
zshgm
- Сообщения: 311
- ОС: Debian
Re: Java получить координаты курсора мыши
kamre писал(а): ↑09.08.2009 15:55
Создаем компонент, добавляем MouseMotionListener. При движении мышки внутри компонента получим событие с координатами внутри компонента. А с помощью вышеуказанной функции можно эти координаты перевести в экранные.
Примерно вот так:
Код: Выделить всё
import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFrame; import javax.swing.SwingUtilities; @SuppressWarnings("serial") public class MouseScreenCoords extends JFrame { public MouseScreenCoords() { super("Mouse Screen Coordinates"); addMouseMotionListener(new MouseAdapter() { @Override public void mouseMoved(MouseEvent e) { Point p = new Point(e.getPoint()); System.out.println("Component coords: x = " + p.x + ", y = " + p.y); SwingUtilities.convertPointToScreen(p, MouseScreenCoords.this); System.out.println("Screen coords: x = " + p.x + ", y = " + p.y); } }); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 150); setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new MouseScreenCoords(); } }); } }
получаю ексепшн
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method run() of type new Runnable(){} must override a superclass method
newblog.kz - заработай на своих статьях :)
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Java получить координаты курсора мыши
Странно, у меня все работает. Вот такая версия java установлена:
java version "1.6.0_14"
Java SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot Client VM (build 14.0-b16, mixed mode, sharing)
Может быть код компилируется под одну версию Java, а запускается на другой?
-
Warlornhor
- Сообщения: 428
- ОС: openSUSE 12.3
Re: Java получить координаты курсора мыши
Ошибка говорит о том что Вы не переписали метод run() у интерфейса Runnable. Но все вроде корректно, однако, если мне не изменяет память, то 4 Java не умела еще работать с аннотациями, может имеет смысл их убрать?
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Java получить координаты курсора мыши
Warlornhor писал(а): ↑09.08.2009 23:29Но все вроде корректно, однако, если мне не изменяет память, то 4 Java не умела еще работать с аннотациями, может имеет смысл их убрать?
С аннотациями проблема была бы еще при компиляции. А приведен был exception в runtime. Мне кажется, что сборка делается не под Java 1.4, а запускается под ней как раз. Хотя я таких exception у себя пока не встречал, так могу и ошибаться...
P.S. в любом случае аннотации нужно убирать, чтобы скомпилировать под 1.4
-
Warlornhor
- Сообщения: 428
- ОС: openSUSE 12.3
Re: Java получить координаты курсора мыши
kamre писал(а): ↑10.08.2009 00:38Warlornhor писал(а): ↑09.08.2009 23:29Но все вроде корректно, однако, если мне не изменяет память, то 4 Java не умела еще работать с аннотациями, может имеет смысл их убрать?
С аннотациями проблема была бы еще при компиляции. А приведен был exception в runtime. Мне кажется, что сборка делается не под Java 1.4, а запускается под ней как раз. Хотя я таких exception у себя пока не встречал, так могу и ошибаться...
C Runnable тоже при компиляции
Unresolved compilation problem
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Java получить координаты курсора мыши
Warlornhor писал(а): ↑10.08.2009 08:45C Runnable тоже при компиляции. И приведен был Error, если мне не изменяет память, то он НЕ Runtime. Ключевая фраза:
Unresolved compilation problem
Ключевая фраза:
Exception in thread "main" java.lang.Error
а это значит, что программу уже скомпилировали и запустили. Компилятор же ошибки еще на этапе компиляции показывает.
Хотя может быть и так, что компилятор вместо ошибки компиляции сгенерировал код для бросания этого исключения. Вроде бы в Eclipse так делается, когда запускается программа не смотря на ошибки компиляции.
-
zshgm
- Сообщения: 311
- ОС: Debian
Re: Java получить координаты курсора мыши
Всем спасибо! получилось на Java, правда реализовать пришлось еще и на сях : /
newblog.kz - заработай на своих статьях :)
-
Alehandra354
- Сообщения: 1
Re: Java получить координаты курсора мыши
kamre писал(а): ↑09.08.2009 15:55
Создаем компонент, добавляем MouseMotionListener. При движении мышки внутри компонента получим событие с координатами внутри компонента. А с помощью вышеуказанной функции можно эти координаты перевести в экранные.
Примерно вот так:
Код: Выделить всё
import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFrame; import javax.swing.SwingUtilities; @SuppressWarnings("serial") public class MouseScreenCoords extends JFrame { public MouseScreenCoords() { super("Mouse Screen Coordinates"); addMouseMotionListener(new MouseAdapter() { @Override public void mouseMoved(MouseEvent e) { Point p = new Point(e.getPoint()); System.out.println("Component coords: x = " + p.x + ", y = " + p.y); SwingUtilities.convertPointToScreen(p, MouseScreenCoords.this); System.out.println("Screen coords: x = " + p.x + ", y = " + p.y); } }); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 150); setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new MouseScreenCoords(); } }); } }
можешь помочь это перевести под android