获取鼠标位置

Mar*_*aux 101 java mouse

我想用Java模拟一个自然的鼠标移动(从这里到像素逐行).要做到这一点,我需要知道起始坐标.

我找到了方法event.getX()和event.getY()但我需要一个事件......

如何在不做任何事情(或不可见的事情)的情况下知道这些职位?

谢谢

vpr*_*m86 196

MouseInfo.getPointerInfo().getLocation()可能会有所帮助.它返回与当前鼠标位置对应的Point对象.

  • `getPointerInfo().getLocation()`返回相对于屏幕的位置.如果你想要相对于你的组件的位置(就像MouseListeners给出的那样)你可以从中减去`yourComponent.getLocationOnScreen()`. (45认同)
  • 除了@ThomasAhle所说的,你可以通过使用已经实现的方便方法来避免自己实现它:`SwingUtilities.convertPointFromScreen(MouseInfo.getPointerInfo().getLocation(),component)` (11认同)
  • 如果鼠标移动太快,+1`Container.getMousePosition()`有时会返回`null`,使用它可以避免这个问题. (2认同)
  • 注意:当没有鼠标或在某些 multimon 设置中时,`MouseInfo.getPointerInfo()` 可能返回 null。 (2认同)
  • 请注意,`SwingUtilities.convertPointFromScreen(..)`就地转换第一个参数并且不返回任何内容,因此需要相对于@AndreiVajnaII注释写一点不同,以便我们可以获得`Point`宾语. (2认同)

小智 37

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);
Run Code Online (Sandbox Code Playgroud)

  • 请在下次添加一些评论. (17认同)

小智 10

在SWT中,您无需在听众中找到鼠标位置.Display对象具有该方法getCursorLocation().

在vanilla SWT/JFace中,请致电Display.getCurrent().getCursorLocation().

在RCP应用程序中,请致电PlatformUI.getWorkbench().getDisplay().getCursorLocation().

对于SWT应用中,优选使用getCursorLocation()MouseInfo.getPointerInfo(),其他人已经提到的,随着后者在SWT被设计用来替换AWT工具包来实现.


小智 6

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 + ")");
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 6

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 
        }

    }

}
Run Code Online (Sandbox Code Playgroud)


Jef*_*rey 5

尝试查看 java.awt.Robot 类。它允许您以编程方式移动鼠标。