我有一个简单的BorderPane实例,它是Scene的根节点。边框窗格的右侧是一个面板,带有一些GUI控件,包括一个按钮。当我单击此按钮时,我创建了一个扩展Foo的类(StackPane)实例,并将该实例作为边框窗格的中心节点。

我想分别通过调用Foothis.getLayoutBounds.getWidth()从和...getHeight()实例中获取边框窗格的可用中心空间的宽度和高度值,但它始终返回零?

最佳答案

将侦听器添加到StackPane的layoutBoundsProperty或绑定到其height和width属性。

JavaFX只会对StackPane的高度和宽度返回零,直到对其执行布局传递为止。由于StackPane是可调整大小的节点,因此JavaFX通常不知道它的大小,除非将其添加到场景并显示在舞台上。

如果只想知道它的初始大小,则可以在调用stage.Show之后在StackPane上调用getHeight或getWidth。

将来的布局传递可能会随着StackPane可用区域的变化而调整其大小,因此,如果您想始终了解当前窗格的大小,建议使用侦听器或绑定。

10-08 14:02