【问题标题】:JavaFX get mouse position on application startJavaFX 在应用程序启动时获取鼠标位置
【发布时间】:2022-10-16 10:18:12
【问题描述】:

鼠标有许多事件处理程序来检索其位置,例如鼠标移动时。 但是我需要在应用程序开始时鼠标的位置,我似乎找不到任何事件处理程序。

例如,我有一个应该始终位于鼠标位置的图像,但当前当应用程序启动时,图像位于 (0.0, 0.0) 坐标(左上角),直到我移动鼠标。
这不是预期的结果。
期望的结果应该是,图像在应用程序启动时直接放置在鼠标的位置。
所以问题是:如何在应用程序开始时直接获得鼠标的位置?

提前致谢!

【问题讨论】:

  • 也许javafx.scene.robot.Robot 班可以提供帮助?
  • 好主意,谢谢,但我应该补充一点,我使用的是 javafx 8。
  • 图像位于 (0.0, 0.0) 坐标(左上角),直到我移动鼠标也许是因为那是鼠标最初所在的位置:) 注册鼠标过滤器并获取初始输入 - 当卡住时,请提供 minimal reproducible example...
  • 鼠标相对于什么的位置?如果应用程序启动时鼠标甚至不在应用程序的边界内怎么办?

标签: java javafx


【解决方案1】:

那么,你来这里的目的是什么?我不知道有什么方法可以得到这个……但是如果你有一个可见的背景,你可以重新定位你的图像。 当您启动此示例时,图像将从您的光标位置重新定位。

        ImageView imageView = new ImageView(new Image("/image.jpg", 300, 300, false, false));
        Button btn = new Button("Action");

        AnchorPane root = new AnchorPane(imageView, btn);
        root.setStyle("-fx-background-color: transparent;");

        Rectangle2D screen = Screen.getPrimary().getVisualBounds();
        Scene scene = new Scene(root, screen.getWidth(), screen.getHeight());
        stage.setTitle("Hello!");
        stage.setScene(scene);
        stage.setMaximized(true);

        scene.setOnMouseEntered(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                // Only works if your region does not manage your children.
                imageView.setLayoutX(event.getX());
                imageView.setLayoutY(event.getY());

            }
        });

        stage.show();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多