防止儿童扩大到适合可用的宽度

时间:2017-10-30 08:00:16

标签: java javafx

我有一个样式的javafx Node(此处称为myLabel),它需要一定的大小(由其内容决定)。我将它放在GridPane中,如果窗格的包含列足够大,则节点会扩展以填充额外的空间,但我希望它保持原始大小。

GridPane pane = new GridPane();
GridPane.setHgrow(pane, Priority.ALWAYS);

ColumnConstraints col0 = new ColumnConstraints();
col0.setHalignment(HPos.LEFT);
col0.setPrefWidth(300);
pane.getColumnConstraints().add(col0);

pane.add(myLabel, 0, 0);

在上述情况下,myLabel占用了它可用的整个300px宽度,但我只希望它使用它所需的空间。

我已尝试设置GridPane.setHgrow(myLabel, Priority.NEVER),但这并不具备我期望的效果(标签将不再分配额外空间)。我不想使用myLabel.setMaxSize(...,...),因为这会影响标签的动态尺寸,我不想对其设置任何约束。

2 个答案:

答案 0 :(得分:0)

事实证明我所寻找的选项不是setHgrow(myLabel, Priority.NEVER),而是setFillWidth(myLabel, false) 看起来setHgrow影响包含节点的区域的大小,如果有更多可用空间,则可选地增加大小,而setFillWidth影响包含节点的大小,可选地增加其尺寸以适应包含它的区域的大小。

Source

答案 1 :(得分:0)

将Min,Max和Pref Width设置为' USE_COMPUTED_SIZE'。

myLabel.setMinWidth(USE_COMPUTED_SIZE);
myLabel.setMaxWidth(USE_COMPUTED_SIZE);
myLabel.setPrefWidth(USE_COMPUTED_SIZE);