JavaFX: Cómo hacer una caja vertical y su contenido expandir infinitamente con la altura de la ventana como lo hacen con el ancho?

Gremious :

Probablemente una pregunta muy simple, pero no he sido capaz de entenderlo.

Tengo un ScrollPane (feat etiqueta.) Dentro de una caja vertical, dentro de un SplitPane:

(Archivo fxml completa en la parte inferior)

introducir descripción de la imagen aquí

Al expandir la ventana o el separador de panel dividido horizontalmente, la Vbox se extiende automáticamente para adaptarse, la etiqueta re-centros appropriatelly, y el panel de desplazamiento se expande para adaptarse a la vbox. Esto no sucede cuando epxanding verticalmente, y me gustaría que lo haga. ¿Cómo puedo lograr eso? Si hay un contenedor distinto que debería usar en su lugar, por favor diga.

Gif de mis problemas si ayuda: introducir descripción de la imagen aquíarchivo fxml completo:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>

<AnchorPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="main.java.ui.DefaultLayoutController">
   <children>
      <BorderPane prefHeight="600.0" prefWidth="800.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
         <top>
            <MenuBar BorderPane.alignment="CENTER">
              <menus>
                <Menu mnemonicParsing="false" text="File">
                  <items>
                    <MenuItem mnemonicParsing="false" text="Close" />
                  </items>
                </Menu>
                <Menu mnemonicParsing="false" text="Edit">
                  <items>
                    <MenuItem mnemonicParsing="false" text="Delete" />
                  </items>
                </Menu>
                <Menu mnemonicParsing="false" text="Help">
                  <items>
                    <MenuItem mnemonicParsing="false" text="About" />
                  </items>
                </Menu>
              </menus>
            </MenuBar>
         </top>
         <center>
            <SplitPane dividerPositions="0.5" prefHeight="160.0" prefWidth="200.0" BorderPane.alignment="CENTER">
              <items>
                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
                     <children>
                        <VBox prefHeight="573.0" prefWidth="306.0" style="-fx-background-color: #ccbfb1;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                           <children>
                              <Label alignment="CENTER" maxWidth="Infinity" prefHeight="61.0" prefWidth="260.0" style="-fx-alignment: center; -fx-background-color: #e6d7c8;" text="Text" textAlignment="CENTER">
                                 <font>
                                    <Font name="AdobeDevanagari-Regular" size="51.0" />
                                 </font>
                              </Label>
                              <ScrollPane fx:id="mainScrollPane" prefHeight="559.0" prefWidth="453.0">
                                <content>
                                  <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="200.0" prefWidth="200.0" />
                                </content>
                              </ScrollPane>
                           </children>
                        </VBox>
                     </children>
                  </AnchorPane>
                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="573.0" prefWidth="364.0">
                     <children>
                        <VBox prefHeight="573.0" prefWidth="396.0" style="-fx-background-color: #e6c896;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
                     </children>
                  </AnchorPane>
              </items>
            </SplitPane>
         </center></BorderPane>
   </children>
</AnchorPane>
Ammar esperar:

Una forma en que podría lograr esto es mediante el establecimiento de la altura máxima de la VBoxy sus elementos a Double.MAX_VALUEusar el setMaxHeight(double)método. Alternativamente, se puede utilizar la estática VBox.setVgrow(Priority)método (recomendado por lo que yo soy consciente) sobre todos los VBoxniños 's. Puede iterar sobre los niños simplemente utilizando un habitual forde bucle:

for(Node child : yourBox.getChildren()) {
    VBox.setVgrow(child, Priority.ALWAYS);
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=276293&siteId=1
Recomendado
Clasificación