How to resize JavaFX ScrollPane content to fit current size

autolayout, javafx, resize, scrollpane

Solution

Try

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

without overriding the `resize()` method.

Problem

I have a `BorderPane` with a `ScrollPane` as the center element. It resizes automatically to fill the screen. Inside the `ScrollPane` is a `HBox` that has no content but is a drag-and-drop target. Therefore I want it to fill its parent `ScrollPane`. What is the preferred way to do this? What I have tried so far is overriding the `ScrollPane.resize(...)` method to resize the `HBox` but it seems rather complicated and unorthodox. edit: To add some useful code to this, this is how I can workaround the problem, but I believe there has to be some better way to do this: ``` @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); } ``` Code partly taken from here: How to access the Scrollbars of a ScrollPane

Original source

Related problems