Изменение размера окна одного компонента JavaFX и автоматического изменения размера дочерних элементов - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу изменить размеры моих дочерних компонентов.Я использую VBOX, как предложено здесь: Компоненты Javafx изменяют размер при полноэкранном режиме .Мне не повезло с изменением размера всех компонентов в соответствии с шириной окна.Только моя первая панель изменяет размеры, и я не знаю почему.

Вот мой код FXML:

<VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" rotate="-0.0" style="-fx-background-color: ;" xmlns="http://javafx.com/javafx/8.0.121" xmlns:fx="http://javafx.com/fxml/1" fx:controller="solutions.lunalabs.incubeatthor.scenes.StatusController">
    <children>
        <Pane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-background-color: #272D2D" VBox.vgrow="ALWAYS">
            <effect>
                <DropShadow />
            </effect>
            <children>
                <Pane layoutX="159.0" prefWidth="553.0" style="-fx-background-color: #272D2D;">
                    <children>
                        <Label layoutX="146.0" layoutY="14.0" text="STATUS" textFill="WHITE">
                            <font>
                                <Font name="System Bold" size="43.0" />
                            </font>
                        </Label>
                        <VBox layoutX="23.0" layoutY="66.0" prefHeight="437.0" prefWidth="469.0">
                            <children>
                                <Pane fx:id="serverStatus" prefHeight="440.0" prefWidth="469.0" style="-fx-background-color: #272D2D;" />
                                <Pane fx:id="generalStatus" prefHeight="440.0" prefWidth="469.0" style="-fx-background-color: #272D2D;">
                                    <children>
                                        <VBox prefHeight="440.0" prefWidth="469.0" />
                                    </children></Pane>
                                <Pane fx:id="sensorStatus" prefHeight="926.0" prefWidth="469.0" style="-fx-background-color: #272D2D;">
                                    <children>
                                        <VBox prefHeight="440.0" prefWidth="489.0">
                                            <children>
                                                <Pane layoutX="14.0" layoutY="14.0" prefHeight="98.0" prefWidth="549.0" style="-fx-background-color: #36393d;">
                                                    <children>
                                                        <Label layoutX="4.0" layoutY="6.0" text="Temparature" textFill="WHITE">
                                                            <font>
                                                                <Font name="System Bold Italic" size="13.0" />
                                                            </font>
                                                        </Label>
                                                        <Label fx:id="temparatureStatus" layoutY="22.0" prefHeight="73.0" prefWidth="95.0" text="0C" textFill="WHITE" translateX="3.0">
                                                            <font>
                                                                <Font name="System Bold" size="28.0" />
                                                            </font>
                                                        </Label>
                                                    </children>
                                                    <effect>
                                                        <DropShadow />
                                                    </effect></Pane>
                                            </children>
                                        </VBox>
                                    </children></Pane>
                            </children>
                        </VBox>
                    </children>
                </Pane>
            <VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity">
               <children>
                      <Pane maxHeight="1.7976931348623157E308" style="-fx-background-color: #e74c3c;">
                          <children>
                        <VBox>
                           <children>
                                    <Pane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="509.0" prefWidth="52.0" style="-fx-background-color: #34495e;" VBox.vgrow="ALWAYS">
                                        <effect>
                                            <DropShadow />
                                        </effect>
                                    </Pane>
                           </children>
                        </VBox>
                              <JFXButton fx:id="sensorBtn" alignment="BASELINE_LEFT" graphicTextGap="25.0" layoutY="130.0" onAction="#statusHandler" text="SENSORS" textFill="#c5c5c5">
                                  <font>
                                      <Font name="System Bold" size="14.0" />
                                  </font>
                                  <graphic>
                                      <FontAwesomeIconView glyphName="HEARTBEAT" size="25.0" strokeType="OUTSIDE" strokeWidth="0.0" />
                                  </graphic>
                              </JFXButton>
                              <JFXButton fx:id="generalBtn" alignment="BASELINE_LEFT" graphicTextGap="25.0" layoutX="-1.0" layoutY="77.0" onAction="#statusHandler" text="GENERAL" textFill="#c5c5c5">
                                  <font>
                                      <Font name="System Bold" size="14.0" />
                                  </font>
                                  <graphic>
                                      <FontAwesomeIconView glyphName="LEAF" size="25" strokeType="OUTSIDE" strokeWidth="0.0" />
                                  </graphic>
                              </JFXButton>
                              <JFXButton fx:id="serverBtn" alignment="BASELINE_LEFT" graphicTextGap="25.0" layoutY="183.0" onAction="#statusHandler" text="SERVER" textFill="#c5c5c5">
                                  <font>
                                      <Font name="System Bold" size="14.0" />
                                  </font>
                                  <graphic>
                                      <FontAwesomeIconView glyphName="TASKS" size="25.0" strokeType="OUTSIDE" strokeWidth="0.0" />
                                  </graphic>
                              </JFXButton>
                              <Label layoutX="54.0" layoutY="6.0" prefHeight="16.0" prefWidth="104.0" text="STATUS TAB" textAlignment="CENTER">
                                  <font>
                                      <Font name="System Bold Italic" size="13.0" />
                                  </font>
                              </Label>
                          </children>
                          <effect>
                              <DropShadow />
                          </effect>
                      </Pane>
               </children>
            </VBox>
            </children>
        </Pane>
    </children>
</VBox>

Вот изображение того, как оно выглядит перед изменением размера: before window resizing

И вот изображение после изменения размера окна: after window resizinh

Кажется, я не могу понять, как сделать изменение размера другихдочерние элементы, а не только первая дочерняя панель.Кроме того, как изменить размер только по вертикали и как изменить размер обоих?Я полагаю, что это связано с Vgrow, но я не уверен, как это реализовать.В настоящее время я использую только FXML, так как я играю с графическим интерфейсом.

...