我有一个简单的BorderPane
实例,它是Scene
的根节点。边框窗格的右侧是一个面板,带有一些GUI控件,包括一个按钮。当我单击此按钮时,我创建了一个扩展Foo
的类(StackPane
)实例,并将该实例作为边框窗格的中心节点。
我想分别通过调用Foo
和this.getLayoutBounds.getWidth()
从和...getHeight()
实例中获取边框窗格的可用中心空间的宽度和高度值,但它始终返回零?
最佳答案
将侦听器添加到StackPane的layoutBoundsProperty或绑定到其height和width属性。
JavaFX只会对StackPane的高度和宽度返回零,直到对其执行布局传递为止。由于StackPane是可调整大小的节点,因此JavaFX通常不知道它的大小,除非将其添加到场景并显示在舞台上。
如果只想知道它的初始大小,则可以在调用stage.Show之后在StackPane上调用getHeight或getWidth。
将来的布局传递可能会随着StackPane可用区域的变化而调整其大小,因此,如果您想始终了解当前窗格的大小,建议使用侦听器或绑定。