Javafx HBox Hgrow(有时)子滚动窗格节点如何获取宽度?

Javafx HBox Hgrow(有时)子滚动窗格节点如何获取宽度?,java,javafx,javafx-8,scrollpane,Java,Javafx,Javafx 8,Scrollpane,我目前有一个滚动窗格,它包含在HBox节点中,并设置为HBox.setHgrow(滚动窗格,优先级有时) 此外,我还通过以下方式手动设置了此滚动窗格的尺寸: scrollpane.setPrefWidth(w); scrollpane.setMaxWidth(mxw); scrollpane.setMinWidth(mnw); 设置完所有这些后,窗格将按需要显示在其父节点中,当父HBox中没有其他节点时,滚动窗格将占据整个空间 当我尝试获取此滚动窗格的宽度时,我无法获取计算的宽度,并且所有值似

我目前有一个滚动窗格,它包含在HBox节点中,并设置为
HBox.setHgrow(滚动窗格,优先级有时)

此外,我还通过以下方式手动设置了此滚动窗格的尺寸:

scrollpane.setPrefWidth(w);
scrollpane.setMaxWidth(mxw);
scrollpane.setMinWidth(mnw);
设置完所有这些后,窗格将按需要显示在其父节点中,当父HBox中没有其他节点时,滚动窗格将占据整个空间

当我尝试获取此滚动窗格的宽度时,我无法获取计算的宽度,并且所有值似乎都返回0;我尝试了以下方法以获得真实的:

scrollpane.getWidth(); // returns 0
scrollpane.getLayoutBounds.getWidth(); // returns 0
scrollpane.boundsInLocalProperty().get().getWidth; // returns 0
scrollpane.boundsInParentProperty().get().getWidth; // returns 0
scrollpane.widthProperty().get(); // returns 0
scrollpane.layoutBoundsProperty().get().getWidth(); // returns 0
我还使用了scenicView v8.0.0来检查宽度的实际值(与prefWidth不同),但我似乎无法从Scrollpane上的可用方法中恢复该值

我不太清楚我在这里遗漏了什么


如果有人能帮我解决这个问题,我将不胜感激。

在做了进一步的研究之后,我发现所有宽度值都设置为0的原因很简单,因为我试图在使用滚动窗格的类的构造函数中执行计算

更具体地说,在构造函数级别,scollpane尚未呈现,因此其属性中没有维度信息,因此没有宽度值


在渲染完成后执行
scrollpane.getWidth()
可以工作并提供正确的信息。

您还可以绑定到这些属性或向它们注册侦听器,例如
someDoubleProperty.bind(scrollpane.widthProperty())
等。可以在渲染滚动窗格之前执行这些代码,当其宽度改变时,将发生更新。另请参见: