JavaFX - Get GridPane适合父级

我有一个简单的GridPane,显示几个标签和一个按钮,但我似乎无法让它适合父StackPane。我该如何去做,让它装满它所在的任何容器?

    GridPane g = new GridPane();
    g.add(new Label("Categories"),0,0);
    g.add(new Label("Content"),1,0);        
    Button newCat = new Button("New Category");
    newCat.setOnAction(new EventHandler<ActionEvent>() {
        @Override public void handle(ActionEvent e) {
            System.out.println("Clicked");
        }
    });       
    g.add(newCat,0,1);
    g.setGridLinesVisible(true);
    StackPane root = new StackPane();
    root.getChildren().add(g);        
    Scene scene = new Scene(root, 300, 250);  
    primaryStage.setScene(scene);
    primaryStage.show();

UI真的不是我的强项,任何帮助将不胜感激。


答案 1

您应该会看到此链接,尤其是有关百分比大小调整的部分。如果您只有两列,我发现该代码可以正常工作:

GridPane grid = new GridPane();
/* your code */
ColumnConstraints column1 = new ColumnConstraints();
column1.setPercentWidth(50);
grid.getColumnConstraints().add(column1);

答案 2

如果有人会寻找答案,这就是它对我的工作方式:

@Override
public void start(Stage stage) throws Exception {
    stage.setTitle("Window title");
    GridPane grid = new GridPane();

    gridSetup(grid); // Building my grid elements here (2 columns)

    // Setting columns size in percent
    ColumnConstraints column = new ColumnConstraints();
    column.setPercentWidth(30);
    grid.getColumnConstraints().add(column);

    column = new ColumnConstraints();
    column.setPercentWidth(70);
    grid.getColumnConstraints().add(column);

    grid.setPrefSize(WINDOW_WIDTH, WINDOW_HEIGHT); // Default width and height
    grid.setMaxSize(Region.USE_COMPUTED_SIZE, Region.USE_COMPUTED_SIZE);

    Scene scene = new Scene(grid, WINDOW_WIDTH, WINDOW_HEIGHT);
    stage.setScene(scene);
    stage.show();
}

通过此设置,网格会占用窗口的所有空间,并与窗口一起自动调整大小。