当JavaFX JavaFX.scene.control.label元素具有它时';s的宽度已调整以适合文本

当JavaFX JavaFX.scene.control.label元素具有它时';s的宽度已调整以适合文本,javafx,Javafx,在我设置了按钮的文本之后,它的宽度属性在那个时刻并没有改变 @Override public void start(Stage stage) throws Exception { Parent parent = ... ... Button component added to the parent ... Scene scene = new Scene(parent); stage.setScene(scene); stage.show

在我设置了按钮的文本之后,它的宽度属性在那个时刻并没有改变

@Override
public void start(Stage stage) throws Exception {

    Parent parent = ...
    ...
    Button component added to the parent
    ...
    Scene scene = new Scene(parent);
    stage.setScene(scene);
    stage.show();           
    ...
    Button's width is 30.0
    Button's text is set here
    Button's width still is 30.0
    ...
}

在布局过程发生之前,尺寸不会改变。我认为所有渲染都应该在
stage.show()调用之后发生。在我设置按钮文本后,有没有一种方法可以提前启动“布局过程发生”?没有,在设置文本后,宽度不会因为文本的变化而改变,直到下一个布局过程。如果每次更改单个属性时都重新计算布局,则效率将极低。(即使在
show()
之前调用
setText()
,也不能保证在调用
getWidth()
之前会出现布局)您可以调用
parent.layout()
,但更大的问题是,为什么您会关心这个问题。除了家长之外,任何人都没有理由关心按钮的大小。这里的底线是,如果你需要知道按钮的宽度,你几乎肯定没有按照预期的方式做事。“几乎肯定没有按照预期的方式做事”——可能是这样