Curso de JavaFX | Layouts

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

StackPane

Superpone los objetos.

StackPane root = new StackPane();
Curso de JavaFX | Layouts 1

GridPane

GridPane root = new GridPane();

// El primer parámetro es el objeto que estamos añadiendo a la regilla
// El segundo parámetro es la columna que ocupará dicho objeto
// El tercer parámetro es la fila que ocupará dicho objeto			
root.add(btn1, 1, 0);

Hacer que las celdas del gridpane ocupen el 100% del espacio disponible:

GridPane.setVgrow(btn2, Priority.ALWAYS);
GridPane.setHgrow(btn1, Priority.ALWAYS);
btn.setMaxWidth(Double.MAX_VALUE);			btn.setMaxHeight(Double.MAX_VALUE);

VBox

Coloca los elementos en vertical.

Curso de JavaFX | Layouts 2

Para que el componente ocupe el 100% del layout que lo envuelve:

VBox.setVgrow(btn1, Priority.ALWAYS);

btn1.setMaxHeight(Double.MAX_VALUE);

HBox

Coloca los elementos en horizontal.

HBox root = new HBox();
Curso de JavaFX | Layouts 3

Para que el componente ocupe el 100% del layout que lo envuelve:

HBox.setHgrow(btn1, Priority.ALWAYS);

btn1.setMaxWidth(Double.MAX_VALUE);

Priority.Always hace que el layout se extienda siempre que sea posible al máximo tamaño.

Añadir elementos a un layout

HBox root = new HBox(btn, btn2);
root.getChildren().add(btn);

Ejercicio layout

Hacer un layout con dos botones que ocupen el 100% del ancho.

Curso de JavaFX | Layouts 4
Descargar Ejercicio Layout
package javafx.layouts; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.stage.Stage; public class WithHBoxMaxWidthSize extends Application { @Override public void start(Stage primaryStage) { try { HBox root = new HBox(); Button btn1 = new Button("Plsame1"); Button btn2 = new Button("Plsame2"); HBox.setHgrow(btn1, Priority.ALWAYS); HBox.setHgrow(btn2, Priority.ALWAYS); btn1.setMaxWidth(Double.MAX_VALUE); btn2.setMaxWidth(Double.MAX_VALUE); root.getChildren().add(btn1); root.getChildren().add(btn2); /* Button btn3 = new Button("Plsame1"); Button btn4 = new Button("Plsame2"); HBox.setHgrow(btn3, Priority.NEVER); HBox.setHgrow(btn4, Priority.NEVER); btn3.setMaxWidth(Double.MAX_VALUE); btn4.setMaxWidth(Double.MAX_VALUE); root.getChildren().add(btn3); root.getChildren().add(btn4); */ Scene scene = new Scene(root, 400, 400); primaryStage.setScene(scene); primaryStage.show(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } }

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.