我有一个样式的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(...,...)
,因为这会影响标签的动态尺寸,我不想对其设置任何约束。
答案 0 :(得分:0)
事实证明我所寻找的选项不是setHgrow(myLabel, Priority.NEVER)
,而是setFillWidth(myLabel, false)
看起来setHgrow
影响包含节点的区域的大小,如果有更多可用空间,则可选地增加大小,而setFillWidth
影响包含节点的大小,可选地增加其尺寸以适应包含它的区域的大小。
答案 1 :(得分:0)
将Min,Max和Pref Width设置为' USE_COMPUTED_SIZE'。
myLabel.setMinWidth(USE_COMPUTED_SIZE);
myLabel.setMaxWidth(USE_COMPUTED_SIZE);
myLabel.setPrefWidth(USE_COMPUTED_SIZE);