我希望我的所有组件(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,但我无法达到我想要的效果。 请帮忙!
答案 0 :(得分:5)
已经解决了。也许这可能对其他人有所帮助。
看来我正在使用Group作为我的场景的根目录。如JavaFX文档中所述:“如果使用组作为根,则场景图形的内容将被场景的宽度和高度剪切,并且更改为场景的大小(如果用户调整舞台大小)将不会改变布局场景图“。
链接:http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.html