あなたがしなければならないのは、あなたのニーズに合わせてグリッド制約を設定されています。これを行うには、をGridRow
(StackPane
は不要)に入れ、vAlignmentとhAlignmentをCenterに設定します。ラベルのvGrowとhGrowをPriority.ALWAYS
に設定します。
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
GridPane gridPane = createMainGrid(2, 2);
gridPane.setAlignment(Pos.CENTER);
gridPane.setHgap(10);
gridPane.setVgap(10);
Scene scene = new Scene(gridPane);
primaryStage.setScene(scene);
primaryStage.show();
}
private GridPane createMainGrid(int rows, int columns) {
GridPane grid = new GridPane();
for (int colIdx = 0; colIdx < columns; colIdx++) {
for (int rowIdx = 0; rowIdx < rows; rowIdx++) {
GridPane innerGrid = createGrid(4, 4);
grid.add(innerGrid, colIdx, rowIdx);
GridPane.setConstraints(innerGrid, colIdx, rowIdx, 1, 1, HPos.CENTER, VPos.CENTER, Priority.ALWAYS, Priority.ALWAYS);
}
}
return grid;
}
private GridPane createGrid(int rows, int columns) {
GridPane grid = new GridPane();
Random random = new Random();
for (int colIdx = 0; colIdx < columns; colIdx++) {
for (int rowIdx = 0; rowIdx < rows; rowIdx++) {
Label label = new Label(String.valueOf(random.nextInt(rows * columns)));
label.setMinSize(30, 30);
label.setAlignment(Pos.CENTER);
grid.add(label, colIdx, rowIdx);
GridPane.setConstraints(label, colIdx, rowIdx, 1, 1, HPos.CENTER, VPos.CENTER, Priority.ALWAYS, Priority.ALWAYS);
}
}
return grid;
}
public static void main(String[] args) {
launch(args);
}
}
出典
2016-04-30 01:57:50
jns