JavaFX:将子元素调整为HBox宽度

时间:2014-02-26 14:31:56

标签: javafx width hbox

是否可以管理HBox中的子元素,以便所有子元素的宽度总和等于HBox的宽度?

因此元素填充HBox并且不留空间。

子元素的高度默认是HBox的高度,那么宽度怎么样?我不想计算程序中的宽度。如果布局自动执行此操作会更好,因此无需进行计算。

4 个答案:

答案 0 :(得分:17)

这取决于HBox包含的孩子类型。有些孩子可能不是可调整大小的节点。但是,一般来说,您可以使用HBox.setHgrow()方法为hbox的所有子项设置相同的Priority。解释是在javadoc:

  

设置子项包含的水平增长优先级   横向盒。如果设置,hbox将使用优先级来分配额外的   如果hbox的大小调整大于其首选宽度,则为空格。如果   多个hbox子项具有相同水平增长优先级,然后   额外的空间将拆分晚上 。如果没有水平   在孩子上设置增长优先级,hbox永远不会分配它   额外的水平空间(如果有)将值设置为null   将删除约束。

此外,如果您尝试获取类似网格的布局,请尝试其他布局选项,例如TilePaneFlowPane以及GridPane

答案 1 :(得分:8)

答案的简单代码是:

$N=4
$alias sayn='echo $N'
$N=2
$sayn
2

建议使用HBox类而不是HBox窗格的名称。

答案 2 :(得分:2)

这对我有用:

<HBox spacing="5">
<Label fx:id="label_error" alignment="CENTER" HBox.hgrow="ALWAYS" maxWidth="Infinity">
    TEST
</Label>

答案 3 :(得分:0)

添加到@ bdshahab的答案,因为HBox将尝试将他们的孩子调整到他们喜欢的宽度,如果他们的首选宽度宽于HBox宽度,他们将只填充框。

因此可能需要做类似的事情:

Button button1 = new Button("Save");
Button button2 = new Button("Delete");
HBox.setHgrow(button1, Priority.ALWAYS);
HBox.setHgrow(button2, Priority.ALWAYS);
button1.setPrefWidth(100000);
button2.setPrefWidth(100000);