在没有事件的情况下检索 JavaFX 中的鼠标位置

Rol*_*015 4 java position javafx mouse-cursor

我想在显示舞台之前检索当前鼠标位置的 x 和 y 坐标。

到目前为止,我发现在 JavaFX 中获取鼠标位置的唯一方法是在 a 内MouseEvent,这不适用于我的情况。此外,我发现可以通过 检索位置java.awt.MouseInfo。然而,我认为这是一个坏主意(我使用 JavaFX 而不是 AWT),并且至少就我而言,会导致HeadlessException.

是否有其他干净的可能性来检索JavaFX中的鼠标位置而不会变得太黑客(例如模拟MouseEvent只是为了获取位置)?

非常感谢!

lam*_*bad 5

好吧,您可以使用 Robot 类获取鼠标坐标。这是一个例子。

com.sun.glass.ui.Robot robot =
                com.sun.glass.ui.Application.GetApplication().createRobot();

        int y = robot.getMouseY();
        System.out.println("y point = " + y);
        int x = robot.getMouseX();
        System.out.println("x point= " + x);
Run Code Online (Sandbox Code Playgroud)

它在linux(基本操作系统)上尝试过并且有效。

更新:经过一番谷歌搜索后,我发现 TestFX 看起来像是尝试实现 Robot 类的原型。看看下面给出的链接。 https://github.com/TestFX/Robot http://mail.openjdk.java.net/pipermail/openjfx-dev/2015-December/018412.html

您也可以执行类似的操作来获取坐标。

public void start(Stage primaryStage) throws Exception {
        GlassRobot robot = new GlassRobotImpl();
        Point2D point = robot.getMouseLocation();
        double x = point.getX();
        double y = point.getY();
        System.out.println("y = " + y);
        System.out.println("x = " + x);
        if(x > 10) {
              primaryStage.show();
       }
public static void main(String[] args) {
        launch(args);
    }
Run Code Online (Sandbox Code Playgroud)

  • 从 11 开始,它有一个名为“javafx.scene.robot.Robot”的机器人,它似乎更适合在 JavaFX 中使用。 (2认同)