Javafx HBox Hgrow(SOMETIMES)子滚动窗节点如何获得宽度?

时间:2015-10-08 19:32:54

标签: java javafx javafx-8 scrollpane

我目前有一个包含在HBox节点中并使用HBox.setHgrow(scrollpane, Priority.SOMETIMES);

设置的滚动窗格

此外,我已使用以下方法手动设置此滚动窗格的尺寸:

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上的可用方法中恢复此值。

我不太确定我在这里缺少什么。

任何帮助解决这个问题都将非常感激。

1 个答案:

答案 0 :(得分:1)

在做了一些进一步的研究之后,我发现所有宽度值都设置为0的原因仅仅是因为我试图在使用ScrollPane的类的构造函数中执行计算。

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

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