JavaFX: держите все компоненты в центре даже при изменении размера окна

Я хочу, чтобы все мои компоненты (текстовые поля, метки и т. д.) оставались в центре с фиксированным размером. Я делаю это в конструкторе сцен, и он работает, когда я вижу предварительный просмотр, но когда я запускаю его, компоненты не остаются в центре, когда я изменяю его размер.

См. изображение здесь: 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, но не могу добиться того, чего хочу. Пожалуйста помоги!


person Cortez Nix    schedule 10.05.2014    source источник
comment
Файл FXML ведет себя так, как вы хотите. Убедитесь, что вы не манипулируете стилем пользовательского интерфейса в классе контроллера. Также убедитесь, что версия JavaFX в Scene Builder и при запуске совпадают.   -  person Uluk Biy    schedule 11.05.2014


Ответы (1)


Это РЕШЕНО. Может быть, это может быть полезно для других.

Похоже, я использую группу в качестве корня для своей сцены. Как сказано в документации JavaFX: «Если в качестве корня используется группа, содержимое графа сцены будет обрезано по ширине и высоте сцены, а изменения размера сцены (если пользователь изменяет размер сцены) не изменит макет граф сцены».

Ссылка: http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.html

person Cortez Nix    schedule 11.05.2014