import javafx.application.Application; import javafx.scene.SceneBuilder; import javafx.scene.control.Label; import javafx.scene.layout.ColumnConstraintsBuilder; import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPaneBuilder; import javafx.scene.layout.Priority; import javafx.scene.layout.RowConstraints; import javafx.scene.layout.VBoxBuilder; import javafx.stage.Stage; import com.javafx.experiments.scenicview.ScenicView; public class MainAppClass extends Application { @Override public void start(Stage primaryStage) { GridPane gp1 = GridPaneBuilder .create() .columnConstraints(ColumnConstraintsBuilder.create().percentWidth(20.0).build(), ColumnConstraintsBuilder.create().hgrow(Priority.ALWAYS).build(), ColumnConstraintsBuilder.create().percentWidth(20.0).build(), ColumnConstraintsBuilder.create().hgrow(Priority.ALWAYS).build(), ColumnConstraintsBuilder.create().percentWidth(20.0).build()) .rowConstraints(new RowConstraints(50.0)).gridLinesVisible(true).build(); GridPane gp2 = GridPaneBuilder.create() // Copy constraints from gp1 .columnConstraints(gp1.getColumnConstraints()) .rowConstraints(new RowConstraints(50.0)).gridLinesVisible(true).build(); Label label1 = new Label("SmallEnough"); gp2.add(label1, 1, 0); GridPane gp3 = GridPaneBuilder.create() // Copy constraints from gp1 .columnConstraints(gp1.getColumnConstraints()) .rowConstraints(new RowConstraints(50.0)).gridLinesVisible(true).build(); Label label2 = new Label("Smaller"); gp3.add(label2, 1, 0); primaryStage.setScene(SceneBuilder.create().width(500).height(300) .root(VBoxBuilder.create().children(gp1, gp2, gp3).spacing(10.0).build()).build()); primaryStage.setTitle("GridPane-Column-Test"); primaryStage.show(); // Comment in, if you have ScenicView-lib included: // move Stage to left, so that ScenicView fits to the right of it primaryStage.setX(primaryStage.getX() - 300.0); ScenicView.show(primaryStage.getScene()); } public static void main(String[] args) { launch(args); } }