2

Trying to achieve:

  1. Text Field 1 and Text Field 3 should occupy all the available free space
  2. Button 1 and Button 2 should have same width

Issue:

Text Field 1 and Text Field 3 are NOT occupying all the available free space (though they are growing once Label is completely displayed)

Here is the screen shot:

GridPane - Controls are not occupying all the available space

// Removed imports for brevity

public class GridPaneTest extends Application
{
  @Override
  public void start(Stage primaryStage)
  {
    primaryStage.setTitle("GridPane Test");

    GridPane gridPane = new GridPane();
    // gridPane.setGridLinesVisible(true);
    gridPane.setHgap(5);
    gridPane.setVgap(5);
    gridPane.setPadding(new Insets(5));

    TextField tf1 = new TextField("Text Field 1");
    GridPane.setHgrow(tf1, Priority.ALWAYS);
    gridPane.add(tf1, 0, 0);
    TextField tf2 = new TextField("Text Field 2");
    GridPane.setHgrow(tf2, Priority.NEVER);
    gridPane.add(tf2, 1, 0);
    Button button1 = new Button("Button 1");
    button1.setMaxWidth(140);
    GridPane.setHgrow(button1, Priority.NEVER);
    GridPane.setHalignment(button1, HPos.RIGHT);
    gridPane.add(button1, 2, 0);

    TextField tf3 = new TextField("Text Field 3");
    GridPane.setHgrow(tf3, Priority.ALWAYS);
    gridPane.add(tf3, 0, 1, 2, 1);
    Button button2 = new Button("Button 2 Button 2");
    button2.setMaxWidth(140);
    GridPane.setHgrow(button2, Priority.NEVER);
    GridPane.setHalignment(button2, HPos.RIGHT);
    gridPane.add(button2, 2, 1);

    Label label1 = new Label(
        "Label 1 Label 1 Label 1 Label 1 Label 1 Label 1 Label 1 Label 1 Label 1 Label 1 Label 1");
    GridPane.setHgrow(label1, Priority.ALWAYS);
    gridPane.add(label1, 0, 2, 3, 1);

    primaryStage.setScene(new Scene(gridPane)); 

    primaryStage.show();
  }

  public static void main(String[] args)
  {
    launch(args);
  }
}
Venkata Raju
  • 4,866
  • 3
  • 27
  • 36

1 Answers1

0

According to GridPane documentation

if an application needs to explicitly control the size of rows or columns, it may do so by adding RowConstraints and ColumnConstraints objects to specify those metrics

gridPane.getColumnConstraints()
  .addAll(new ColumnConstraints(), new ColumnConstraints(),
    new ColumnConstraints(140) /* Control the third column size */);

Screen shot:

GridPane - Demo configuring controls to grow and occupy all the available free space

Venkata Raju
  • 4,866
  • 3
  • 27
  • 36