Código de ejemplo para un proyecto en JavaFX donde se puede apreciar la diferencia de colocación de elementos usando posiciones fijas con setLayoutX(), respecto al posicionamiento usando elementos contenedores como HBox y estableciendo valores de tamaños mínimos, preferidos y máximo.

Se han asignado bordes de colores a cada elemento para poder observar con más detalle su comportamiento.

Hnet.com image 1 20990

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;


public class App extends Application {

    @Override
    public void start(Stage stage) {
        VBox paneRoot = new VBox();
        paneRoot.setPadding(new Insets(2));
        var scene = new Scene(paneRoot, 640, 200);
        stage.setScene(scene);
        stage.show();

        showFila1(paneRoot);
        showFila2(paneRoot);
    }

    // Ejemplo de posicionamiento usando valores fijos
    private void showFila1(Pane paneRoot) {
        Pane paneFila = new Pane();
        paneFila.setStyle("-fx-border-color: orange; -fx-padding: 2px; -fx-margin: 2px");
        paneFila.setPrefWidth(paneRoot.getWidth());
        paneRoot.getChildren().add(paneFila);

        // TEXTO 1 fijado en la posición 100
        Label label1 = new Label("Texto1");
        label1.setStyle("-fx-border-color: red");
        label1.setLayoutX(100);
        paneFila.getChildren().add(label1);        

        // TEXTO 2 fijado en la posición 250
        Label label2 = new Label("Texto2");
        label2.setStyle("-fx-border-color: green");
        label2.setLayoutX(250);
        paneFila.getChildren().add(label2);        

        // TEXTO 3 fijado en la posición 450
        Label label3 = new Label("Texto3");
        label3.setStyle("-fx-border-color: blue");
        label3.setLayoutX(450);
        paneFila.getChildren().add(label3);        
    }
    
    // Ejemplo de posicionamiento usando contenedores
    private void showFila2(Pane paneRoot) {
        HBox hBoxFila1 = new HBox();
        hBoxFila1.setStyle("-fx-border-color: orange; -fx-padding: 2px; -fx-margin: 2px");
        // El contenido de la fila se mostrará centrado
        hBoxFila1.setAlignment(Pos.CENTER);
        // La fila no crece más de 1000px
        hBoxFila1.setMaxWidth(1000);  // <<<<<<<<<<<<<<<
        paneRoot.getChildren().add(hBoxFila1);
                
        // Todo el contenido de la fila se mete en un contenedor para que permanezca centrado
        HBox hBoxTextosFila1 = new HBox();
        hBoxTextosFila1.setStyle("-fx-border-color: purple; -fx-padding: 2px; -fx-margin: 2px");
        hBoxFila1.getChildren().add(hBoxTextosFila1);

        // TEXTO 1
        // Como mínimo tendrá 100px
        // No se establece valor predefinido
        Label label1 = new Label("Texto1");
        label1.setStyle("-fx-border-color: red");
        label1.setMinWidth(100);  // <<<<<<<<<<<<<<<
        label1.setAlignment(Pos.CENTER);
        hBoxTextosFila1.getChildren().add(label1);
        
        // TEXTO 2
        // No se establece valor mínimo
        // El tamaño predefinido es 200 px, pero podrá aumentar y reducir
        Label label2 = new Label("Texto2");
        label2.setStyle("-fx-border-color: green");
        label2.setPrefWidth(200);  // <<<<<<<<<<<<<<<
        label2.setAlignment(Pos.CENTER);
        hBoxTextosFila1.getChildren().add(label2);
        
        // TEXTO 3
        // Como mínimo tendrá 100px
        // El tamaño predefinido es 200 px, pero podrá aumentar y reducir
        Label label3 = new Label("Texto3");
        label3.setStyle("-fx-border-color: blue");
        label3.setMinWidth(100);   // <<<<<<<<<<<<<<<
        label3.setPrefWidth(200);  // <<<<<<<<<<<<<<<
        label3.setAlignment(Pos.CENTER);
        hBoxTextosFila1.getChildren().add(label3);    
    }
    
    
    public static void main(String[] args) {
        launch();
    }

}