当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()
,但更大的问题是,为什么您会关心这个问题。除了家长之外,任何人都没有理由关心按钮的大小。这里的底线是,如果你需要知道按钮的宽度,你几乎肯定没有按照预期的方式做事。“几乎肯定没有按照预期的方式做事”——可能是这样