java - 如何在 JavaFx 8 中将鼠标坐标转换为本地 SubScene

标签 java javafx 3d geometry

我有一个主舞台,其中有一个场景,该场景包含四个子场景。我想获取所单击场景的本地鼠标单击坐标。我知道鼠标单击了哪个场景,因为所有场景都有各自的事件监听器,但我得到的坐标是主场景(舞台)的坐标。如何将该坐标转换为场景的本地坐标。

提前致谢。

最佳答案

将监听器添加到各个子场景对我来说效果很好:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.SubScene;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class SubSceneClickTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        GridPane root = new GridPane();
        for (int i = 0 ; i < 4 ; i++) {
            SubScene subScene = new SubScene(new StackPane(), 300, 300);
            subScene.setFill((i + i / 2) % 2 == 0 ? Color.CORNFLOWERBLUE : Color.AQUA);
            String message = "Click on subscene "+i;
            subScene.setOnMouseClicked(e -> System.out.printf("%s [%.1f, %.1f]%n", message, e.getX(), e.getY()));
            root.add(subScene, i / 2, i % 2);
        }
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

关于java - 如何在 JavaFx 8 中将鼠标坐标转换为本地 SubScene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43140229/

相关文章:

java - 当用户在 spring boot 应用程序中输入无效 URL 时如何显示自定义 404 页面?

javafx - 使用 FXML 在用户控件中创建并绑定(bind) DoubleProperty

java - 当按下键盘上的某个键时,如何更改按钮的外观。 JavaFX

java - Java 泛型什么时候需要 <?扩展 T> 而不是 <T> 并且切换有什么缺点吗?

java - 使用jssc进行串行通信时出现延迟

java - 如何获取JAVA文件中最后写入的位置?

javafx - Tableview 整数排序有问题吗?

c++ - 在 openGL 中使用着色器显示体素

java - 当我用鼠标旋转它时,立方体逐渐缩小..

javascript - IE、Mozilla 和 Chrome 支持的 3D Javascript 库