如何调整JavaFX ScrollPane内容以适应当前大小

我有一个以ScrollPane作为中心元素的BorderPane 。 它自动resize以填满屏幕。 ScrollPane内部是一个HBox ,它没有内容,但是是一个拖放目标。 所以我想要它填充它的父ScrollPane

什么是这样做的首选方法?

我到目前为止所尝试的是重写ScrollPane.resize(...)方法来调整HBox大小,但它看起来相当复杂和非正统。

编辑:若要添加一些有用的代码,这是我可以解决这个问题,但我相信有一些更好的方法来做到这一点:

 @Override public void resize(double width, double height) { super.resize(width, height); double scrollBarHeight = 2; double scrollBarWidth = 2; for (final Node node : lookupAll(".scroll-bar")) { if (node instanceof ScrollBar) { ScrollBar sb = (ScrollBar) node; if (sb.getOrientation() == Orientation.HORIZONTAL) { System.out.println("horizontal scrollbar visible = " + sb.isVisible()); System.out.println("width = " + sb.getWidth()); System.out.println("height = " + sb.getHeight()); if(sb.isVisible()){ scrollBarHeight = sb.getHeight(); } } if (sb.getOrientation() == Orientation.VERTICAL) { System.out.println("vertical scrollbar visible = " + sb.isVisible()); System.out.println("width = " + sb.getWidth()); System.out.println("height = " + sb.getHeight()); if(sb.isVisible()){ scrollBarWidth = sb.getWidth(); } } } } hBox.setPrefSize(width-scrollBarWidth, height-scrollBarHeight); } 

代码部分取自: 如何访问ScrollPane的滚动条

尝试

 ScrollPane scrollPane = new ScrollPane(); scrollPane.setFitToHeight(true); scrollPane.setFitToWidth(true); 

而不会覆盖resize()方法。

通过XMLCSS设置fitToHeightfitToWidth属性:

FXML:

 <ScrollPane fx:id="myScrollPane" fitToHeight="true" fitToWidth="true" /> 

CSS:

 .my-scroll-pane { -fx-fit-to-height: true; -fx-fit-to-width: true; }