JavaFX StackPane显示不正确的(X,Y)协调

时间:2019-03-02 13:35:41

标签: java javafx javafx-8 coordinates

我正在尝试打印StackPane中的所有节点。 我需要获取X,Y坐标以及节点(所有矩形)的高度和宽度。 但是,即使我没有特别选择,它也会显示X,Y坐标为(0,0)。

代码:

@Override
public void start(Stage primaryStage) {
    Rectangle rec1 = new Rectangle();
    rec1.setTranslateX(230);
    rec1.setTranslateY(230);
    rec1.setWidth(50);
    rec1.setHeight(50);

    Rectangle rec2 = new Rectangle();
    rec2.setTranslateX(150);
    rec2.setTranslateY(150);
    rec2.setWidth(75);
    rec2.setHeight(75);

    StackPane root = new StackPane();
    root.getChildren().add(rec1);
    root.getChildren().add(rec2);

    Scene scene = new Scene(root, 1280, 720);

    primaryStage.setTitle("Shapes");
    primaryStage.setScene(scene);
    primaryStage.show();

    System.out.println(root.getChildren());
}

输出:

[Rectangle[x=0.0, y=0.0, width=50.0, height=50.0, fill=0x000000ff], Rectangle[x=0.0, y=0.0, width=75.0, height=75.0, fill=0x000000ff]]

从上面的输出中可以看到。可以使用高度和宽度,但不显示X和Y布局/平移。我还使用过: rec1.setLayoutX(230),但这并没有改变任何东西。

出什么问题了? 我该如何解决呢? 谢谢。

2 个答案:

答案 0 :(得分:2)

要打印输出Node.toSring中未包含的信息,请根据需要定制打印输出。例如:

print(root.getChildren());
private void print(ObservableList<Node> children) {
        for(Node child: children){
            double width = child.getBoundsInLocal().getWidth();
            Object height = child.getBoundsInLocal().getHeight();
            double x = child.getTranslateX();
            double y = child.getTranslateY();
            System.out.println("trans x - y: " + x + " - "+y  + " width - height: " + width +" - "+ height);
        }
    }

答案 1 :(得分:1)

如果尝试使用rec1.setX(100),它将显示为[Rectangle [x = 100.0,y = 0.0]。 与rec1.setY()相同。看看有关setX()setTranslateX()setLayoutX()的文档。