我目前有一个包含在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上的可用方法中恢复此值。
我不太确定我在这里缺少什么。
任何帮助解决这个问题都将非常感激。
答案 0 :(得分:1)
在做了一些进一步的研究之后,我发现所有宽度值都设置为0的原因仅仅是因为我试图在使用ScrollPane的类的构造函数中执行计算。
更具体地说,在构造函数级别,scollpane尚未呈现,因此其属性中没有维度信息,因此没有宽度值。
渲染完成后执行scrollpane.getWidth()
可以正常工作并提供正确的信息。