style hbox examples example resize javafx autolayout scrollpane

resize - hbox - javafx pane border



Cómo cambiar el tamaño del contenido de JavaFX ScrollPane para que se ajuste al tamaño actual (2)

Establecer el fitToHeight o fitToWidth través de XML o CSS :

FXML:

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

CSS:

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

Tengo un BorderPane con un ScrollPane como elemento central. Cambia el tamaño automáticamente para llenar la pantalla. Dentro del ScrollPane hay un HBox que no tiene contenido pero es un objetivo de arrastrar y soltar. Por lo tanto, quiero que llene su ScrollPane principal.

¿Cuál es la forma preferida de hacer esto?

Lo que he intentado hasta ahora es anular el método ScrollPane.resize(...) para cambiar el tamaño del HBox pero parece bastante complicado y poco ortodoxo.

editar: para agregar un código útil a esto, así puedo solucionar el problema, pero creo que debe haber una forma mejor de hacerlo:

@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); }

Código tomado en parte desde aquí: Cómo acceder a las barras de desplazamiento de un ScrollPane


Tratar

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

sin anular el método resize() .