GridPane 最多填充 space - 部分区域仅相关
GridPane fills up to much space - partial region only relevant
目标是在调整 window 大小时调整 GridPane 中特定区域(仅相关 - 左上角区域)的大小。相关区域应始终适合 window 大小。调整大小机制工作正常,但 GridPane 似乎大得多,缩小了重要区域。
有没有办法切断 GridPane 中未使用的单元格?
或者有更好的解决方案吗?
问题代码及截图如下:
for (int row = 0; row <= characters.length - 1; row++) {
for (int column = 0; column <= characters[0].length - 1; column++) {
ClockElement n = new ClockElement(characters[row][column], false);
grid.add(n.getLabel(), column, row);
GridPane.setHalignment(n.getLabel(), HPos.CENTER);
ColumnConstraints c = new ColumnConstraints();
c.setHgrow(Priority.ALWAYS);
//c.setMinWidth(40);
c.setPercentWidth(50); //old 40
grid.getColumnConstraints().add(c);
RowConstraints r = new RowConstraints();
r.setVgrow(Priority.ALWAYS);
//r.setMinHeight(40);
r.setPercentHeight(50);
grid.getRowConstraints().add(r);
arrClockElement[row][column] = n;
}
}
grid.setPadding(new Insets(0, 0, 0, 0));
grid.setPrefSize(580, 680); // Default width and height
grid.setMaxSize(Region.USE_COMPUTED_SIZE, Region.USE_COMPUTED_SIZE);
grid.setGridLinesVisible(true);
您添加的 ColumnConstraint
和 RowConstraint
过多。您需要 characters.length
(行数)RowConstraints
和 characters[0].length
(列数)ColumnConstraints
。相反,您在内部循环中添加了两者,因此您添加了每个 (characters.length)*(characters[0].length)
。
将 RowConstraints
创建移到内部循环之外,并创建一个新循环以添加 ColumnConstraints
:
for (int row = 0; row <= characters.length - 1; row++) {
RowConstraints r = new RowConstraints();
r.setVgrow(Priority.ALWAYS);
//r.setMinHeight(40);
r.setPercentHeight(50);
grid.getRowConstraints().add(r);
for (int column = 0; column <= characters[0].length - 1; column++) {
ClockElement n = new ClockElement(characters[row][column], false);
grid.add(n.getLabel(), column, row);
GridPane.setHalignment(n.getLabel(), HPos.CENTER);
arrClockElement[row][column] = n;
}
}
for (int column = 0 ; column < characters[0].length; column++) {
ColumnConstraints c = new ColumnConstraints();
c.setHgrow(Priority.ALWAYS);
//c.setMinWidth(40);
c.setPercentWidth(50); //old 40
grid.getColumnConstraints().add(c);
}
目标是在调整 window 大小时调整 GridPane 中特定区域(仅相关 - 左上角区域)的大小。相关区域应始终适合 window 大小。调整大小机制工作正常,但 GridPane 似乎大得多,缩小了重要区域。
有没有办法切断 GridPane 中未使用的单元格?
或者有更好的解决方案吗?
问题代码及截图如下:
for (int row = 0; row <= characters.length - 1; row++) {
for (int column = 0; column <= characters[0].length - 1; column++) {
ClockElement n = new ClockElement(characters[row][column], false);
grid.add(n.getLabel(), column, row);
GridPane.setHalignment(n.getLabel(), HPos.CENTER);
ColumnConstraints c = new ColumnConstraints();
c.setHgrow(Priority.ALWAYS);
//c.setMinWidth(40);
c.setPercentWidth(50); //old 40
grid.getColumnConstraints().add(c);
RowConstraints r = new RowConstraints();
r.setVgrow(Priority.ALWAYS);
//r.setMinHeight(40);
r.setPercentHeight(50);
grid.getRowConstraints().add(r);
arrClockElement[row][column] = n;
}
}
grid.setPadding(new Insets(0, 0, 0, 0));
grid.setPrefSize(580, 680); // Default width and height
grid.setMaxSize(Region.USE_COMPUTED_SIZE, Region.USE_COMPUTED_SIZE);
grid.setGridLinesVisible(true);
您添加的 ColumnConstraint
和 RowConstraint
过多。您需要 characters.length
(行数)RowConstraints
和 characters[0].length
(列数)ColumnConstraints
。相反,您在内部循环中添加了两者,因此您添加了每个 (characters.length)*(characters[0].length)
。
将 RowConstraints
创建移到内部循环之外,并创建一个新循环以添加 ColumnConstraints
:
for (int row = 0; row <= characters.length - 1; row++) {
RowConstraints r = new RowConstraints();
r.setVgrow(Priority.ALWAYS);
//r.setMinHeight(40);
r.setPercentHeight(50);
grid.getRowConstraints().add(r);
for (int column = 0; column <= characters[0].length - 1; column++) {
ClockElement n = new ClockElement(characters[row][column], false);
grid.add(n.getLabel(), column, row);
GridPane.setHalignment(n.getLabel(), HPos.CENTER);
arrClockElement[row][column] = n;
}
}
for (int column = 0 ; column < characters[0].length; column++) {
ColumnConstraints c = new ColumnConstraints();
c.setHgrow(Priority.ALWAYS);
//c.setMinWidth(40);
c.setPercentWidth(50); //old 40
grid.getColumnConstraints().add(c);
}