HBox的 JavaFX文档说:
如果 hbox 的大小调整为大于其首选宽度,默认情况下它将保持子项的首选宽度,而剩余空间未使用。如果一个应用程序希望为一个或多个孩子分配额外的空间,它可以选择对孩子设置一个 hgrow 约束。有关详细信息,请参阅“可选布局约束”。
在附图中,为什么按钮没有填充水平宽度?
HBox.setHgrow(field, Priority.ALWAYS)
这与文档引用的代码不一样。
HBox的 JavaFX文档说:
如果 hbox 的大小调整为大于其首选宽度,默认情况下它将保持子项的首选宽度,而剩余空间未使用。如果一个应用程序希望为一个或多个孩子分配额外的空间,它可以选择对孩子设置一个 hgrow 约束。有关详细信息,请参阅“可选布局约束”。
在附图中,为什么按钮没有填充水平宽度?
HBox.setHgrow(field, Priority.ALWAYS)
这与文档引用的代码不一样。
选择您在屏幕截图中所做的按钮,并在右侧布局窗格中的那些大小框中将最大宽度设置为:
MAX_VALUE
这将阻止按钮的最大大小绑定到按钮的首选大小。
请参阅 Oracle关于调整节点大小和对齐的技巧
UI 控件还提供基于控件典型用法的默认最小和最大尺寸。例如,Button 对象的最大大小默认为其首选大小,因为您通常不希望按钮变得任意大。
……
为了使所有按钮的大小都可以调整为
VBox
窗格的宽度,每个按钮的最大宽度设置为Double.MAX_VALUE
常量,这使得控件可以无限制地增长。使用最大值常量的替代方法是将最大宽度设置为特定值,例如 80.0。
如果直接使用 fxml,则可以使用maxWidth="Infinity"
, 或 - 就像 SceneBuilder 在使用 MAX_VALUE 时所做的那样,由maxWidth="1.7976931348623157E308"
.
这可能看起来像这样(进度条在 GridPane 内:
<ProgressBar maxWidth="Infinity" prefWidth="200.0" progress="0.0" GridPane.columnIndex="0" GridPane.hgrow="ALWAYS" GridPane.rowIndex="2" GridPane.valignment="CENTER">