JavaFX:即使在调整窗口大小时,也要将所有组件保持在中心位置

时间:2014-05-10 16:41:33

标签: layout javafx fxml scenebuilder

我希望我的所有组件(TextFields,标签等)都保持在固定大小的中心。我在场景构建器中制作它并且当我看到预览时它可以工作,但是当我启动它时,当我调整它时,组件不会留在中心。

请参见此处的图片:http://postimg.org/image/r42kvvfbf/

FXML文件:

<AnchorPane id="AnchorPane" fx:id="root" maxHeight="-1.0" maxWidth="-1.0" minHeight="400.0" minWidth="600.0" prefHeight="-1.0" prefWidth="-1.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="myController">
  <children>
    <GridPane alignment="CENTER" prefHeight="-1.0" prefWidth="-1.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
      <children>
        <VBox alignment="CENTER_LEFT" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="-1.0" prefWidth="-1.0" spacing="10.0" GridPane.columnIndex="0" GridPane.rowIndex="0">
          <children>
            <Label text="ID number" />
            <TextField fx:id="id" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="210.0" promptText="" />
            <Label text="Password" />
            <TextField fx:id="password" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="210.0" promptText="" />
            <HBox id="HBox" alignment="CENTER" spacing="5.0">
              <children>
                <Button mnemonicParsing="false" onAction="#loginAction" text="Вход" textAlignment="CENTER" textOverrun="ELLIPSIS" />
              </children>
            </HBox>
          </children>
          <padding>
            <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
          </padding>
        </VBox>
      </children>
      <columnConstraints>
        <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
      </columnConstraints>
      <rowConstraints>
        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
      </rowConstraints>
    </GridPane>
  </children>
</AnchorPane>

我尝试过使用StackPane并且只使用VBox,但我无法达到我想要的效果。 请帮忙!

1 个答案:

答案 0 :(得分:5)

已经解决了。也许这可能对其他人有所帮助。

看来我正在使用Group作为我的场景的根目录。如JavaFX文档中所述:“如果使用组作为根,则场景图形的内容将被场景的宽度和高度剪切,并且更改为场景的大小(如果用户调整舞台大小)将不会改变布局场景图“。

链接:http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.html