Gridpane 如何在 JavaFX 中拉伸整个 AnchorPane 的高度? AnchorPane 是 main window 的根

How does Gridpane stretch the full height of AnchorPane in JavaFX? AnchorPane is a root of main window

我想创建一个基于 GridPane 的应用程序。 为了适应性,我使用 AnchorPane。布局在整个宽度上延伸得很好,但在高度上却很糟糕。如何解决?

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

<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.control.Button?>

<AnchorPane maxHeight="1000" maxWidth="-Infinity" minHeight="1000" minWidth="-Infinity" prefHeight="1000.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="code.WhiteBoardApplication">
   <children>
      <GridPane  maxWidth="-Infinity" minHeight="1000" minWidth="-Infinity" prefHeight="1000.0" prefWidth="1200.0" gridLinesVisible="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
        <columnConstraints>
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
        </columnConstraints>
        <rowConstraints>
          <RowConstraints maxHeight="251.0" minHeight="0.0" prefHeight="66.0" vgrow="SOMETIMES" />
          <RowConstraints maxHeight="311.0" minHeight="10.0" prefHeight="154.0" vgrow="SOMETIMES" />
          <RowConstraints maxHeight="202.0" minHeight="10.0" prefHeight="178.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnSpan="2">
               <children>
                  <ToolBar prefHeight="40.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                    <items>
                      <Button mnemonicParsing="false" text="Button" />
                    </items>
                  </ToolBar>
               </children></AnchorPane>
            <AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1" />
            <AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="2" />
            <AnchorPane minHeight="1000.0" prefHeight="1000.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1" GridPane.rowSpan="2" />
         </children>
      </GridPane>
   </children>
</AnchorPane>

Application

您已在列行上设置 max-height

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>

<AnchorPane maxHeight="1000" maxWidth="-Infinity" minHeight="1000" minWidth="-Infinity" prefHeight="1000.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="code.WhiteBoardApplication">
   <children>
      <GridPane gridLinesVisible="true" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="1000" minWidth="-Infinity" prefHeight="1000.0" prefWidth="1200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
        <columnConstraints>
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
        </columnConstraints>
        <rowConstraints>
          <RowConstraints minHeight="0.0" prefHeight="66.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="154.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="178.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnSpan="2">
               <children>
                  <ToolBar prefHeight="40.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                    <items>
                      <Button mnemonicParsing="false" text="Button" />
                    </items>
                  </ToolBar>
               </children></AnchorPane>
            <AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1" />
            <AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="2" />
            <AnchorPane minHeight="1000.0" prefHeight="1000.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1" GridPane.rowSpan="2" />
         </children>
      </GridPane>
   </children>
</AnchorPane>