Получить Положение Мыши
Я хотел бы имитировать естественное движение мыши в Java (переход отсюда туда пиксель за пикселем). Для этого мне нужно знать стартовые координаты.
Я нашел событие метод.getX() и event.Гети() но мне нужно событие...
Как я могу знать должности, ничего не делая (или что-то не видно)?
спасибо
10 ответов:
MouseInfo.getPointerInfo ().getLocation () может быть полезным. Он возвращает точка объект, соответствующий текущей позиции мыши.
PointerInfo a = MouseInfo.getPointerInfo(); Point b = a.getLocation(); int x = (int) b.getX(); int y = (int) b.getY(); System.out.print(y + "jjjjjjjjj"); System.out.print(x); Robot r = new Robot(); r.mouseMove(x, y - 50);
в SWT вам не нужно быть в слушателе, чтобы добраться до места мыши. Экранный объект имеет метод
getCursorLocation()
.в vanilla SWT / JFace, звоните
Display.getCurrent().getCursorLocation()
.в приложении RCP позвоните
PlatformUI.getWorkbench().getDisplay().getCursorLocation()
.для SWT-приложений предпочтительно использовать
getCursorLocation()
наMouseInfo.getPointerInfo()
что другие уже упоминали, так как последний реализован в инструментарии AWT, который SWT был разработан для замены.
import java.awt.MouseInfo; import java.awt.GridLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import javax.swing.*; public class MyClass { public static void main(String[] args) throws InterruptedException{ while(true){ //Thread.sleep(100); System.out.println("(" + MouseInfo.getPointerInfo().getLocation().x + ", " + MouseInfo.getPointerInfo().getLocation().y + ")"); } } }
import java.awt.MouseInfo; import java.util.concurrent.TimeUnit; public class Cords { public static void main(String[] args) throws InterruptedException { //get cords of mouse code, outputs to console every 1/2 second //make sure to import and include the "throws in the main method" while(true == true) { TimeUnit.SECONDS.sleep(1/2); double mouseX = MouseInfo.getPointerInfo().getLocation().getX(); double mouseY = MouseInfo.getPointerInfo().getLocation().getY(); System.out.println("X:" + mouseX); System.out.println("Y:" + mouseY); //make sure to import } } }
Если вы используете Swing в качестве слоя пользовательского интерфейса, вы можете использовать Mouse-Motion Listener для этого.
Если вы используете SWT, вы можете посмотреть на добавление MouseMoveListener, как описано здесь.
в моем сценарии я должен был открыть диалоговое окно в позиции мыши на основе операции GUI, выполненной с помощью мыши. Следующий код работал для меня:
public Object open() { //create the contents of the dialog createContents(); //setting the shell location based on the curent position //of the mouse PointerInfo a = MouseInfo.getPointerInfo(); Point pt = a.getLocation(); shellEO.setLocation (pt.x, pt.y); //once the contents are created and location is set- //open the dialog shellEO.open(); shellEO.layout(); Display display = getParent().getDisplay(); while (!shellEO.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } return result; }
Я делаю что-то вроде этого, чтобы получить координаты мыши с помощью робота, я использую эти координаты дальше в нескольких играх, которые я разрабатываю:
public class ForMouseOnly { public static void main(String[] args) throws InterruptedException { int x = MouseInfo.getPointerInfo().getLocation().x; int y = MouseInfo.getPointerInfo().getLocation().y; while (true) { if (x != MouseInfo.getPointerInfo().getLocation().x || y != MouseInfo.getPointerInfo().getLocation().y) { System.out.println("(" + MouseInfo.getPointerInfo().getLocation().x + ", " + MouseInfo.getPointerInfo().getLocation().y + ")"); x = MouseInfo.getPointerInfo().getLocation().x; y = MouseInfo.getPointerInfo().getLocation().y; } } } }