この動作の仕組みを理解する上で問題があります。私はSceneBuilder 2.0で円を作成し、この方法を使用する場合:MouseEventがJavaFXのgetX()およびgetSceneX()の同じ座標を返す理由
circleLayer.setOnMousePressed(me -> {
System.out.println("***" + me.getX() + " " + me.getY());
});
をI円(中央が0,0である)に値xとyの親族を得ます。それが私の必要なものです。しかし、コード内でまったく同じことをすると、私はシーン座標を取得します。
コード:
public class Main2 extends Application {
private Scene scene;
private Circle circleLayer;
private void init(Stage primaryStage) {
Group root = new Group();
primaryStage.setResizable(false);
scene = new Scene(root, 600, 460);
primaryStage.setScene(scene);
//
circleLayer = new Circle(300, 300, 100);
circleLayer.setFill(Color.PURPLE);
root.getChildren().add(circleLayer);
//
}
@Override
public void start(Stage primaryStage) throws Exception {
init(primaryStage);
primaryStage.show();
circleLayer.setOnMousePressed(me -> {
System.out.println("***"+me.getX() +" "+me.getY());
});
//
scene.addEventFilter(MouseEvent.MOUSE_PRESSED, mouseEvent ->{
System.out.println(mouseEvent.getX()+" "+mouseEvent.getY());
});
}
public static void main(String[] args) {
launch(args);
}
}
これはなぜ起こるのでしょうか?なぜ私はgetX()
とgetSceneY()
と同じ値を得ているのですか?
Circle
に関連する座標を取得する必要があります。