2014-05-10 7 views
6

Ich möchte, dass alle meine Komponenten (TextFields, Labels, etc.) in der Mitte mit fester Größe bleiben. Ich mache es in Szene Builder und es funktioniert, wenn ich die Vorschau sehe, aber wenn ich es starte, bleiben Komponenten nicht in der Mitte, wenn ich die Größe verändere.JavaFX: halte alle Komponenten in der Mitte, auch wenn ich die Größe eines Fensters ändere

Bitte sehen Sie das Bild hier: http://postimg.org/image/r42kvvfbf/

FXML Datei:

<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> 

Ich habe versucht, StackPane verwenden und nur mit VBox als gut, aber ich kann nicht erreichen, was ich will. Bitte helfen!

+0

Die FXML Datei verhält sich wie wie Sie wollen .. Seien Sie sicher, dass Sie nicht die Benutzeroberfläche Stil in Controller-Klasse zu manipulieren. Stellen Sie außerdem sicher, dass die Version von JavaFX im Scene Builder und beim Starten identisch ist. –

Antwort

3

Es ist gelöst. Vielleicht könnte das für andere hilfreich sein.

Es scheint, dass ich Gruppe als eine Wurzel für meine Szene verwende. Wie in der JavaFX-Dokumentation gesagt: "Wenn eine Gruppe als Wurzel verwendet wird, wird der Inhalt des Szenegraphs durch die Breite und Höhe der Szene abgeschnitten und die Größe der Szene ändert sich nicht (wenn der Benutzer die Größe der Bühne ändert) der Szenengraph ".

-Link: http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.html