JavaFX StackPane показывает неправильную (X, Y) координацию - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь распечатать все узлы в StackPane.Мне необходимо получить координаты X, Y, а также высоту и ширину узлов (все прямоугольники).Тем не менее, он показывает (0,0) для координат X, Y, даже если я специально выбрал другое значение.

Код:

@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 голосов
/ 02 марта 2019

Для распечатки информации, отличной от включенной в 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);
        }
    }
0 голосов
/ 02 марта 2019

Если вы попробуете rec1.setX(100), он будет отображаться как [Прямоугольник [x = 100.0, y = 0.0].То же самое для rec1.setY().Посмотрите на документы о setX () , setTranslateX () , setLayoutX () .

...