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() .