2017-07-04 4 views
1

J'essaie de centrer une vue sur une autre vue essentiellement dans un volet d'ancrage.Centrer une vue sur une autre vue dans JavaFx

Voici mon code:

<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0"> 
    <children> 
     <ListView fx:id="list" prefHeight="750.0" prefWidth="300.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" /> 
     <ProgressIndicator fx:id="bar" /> 
    </children> 
</AnchorPane> 

Voici à quoi il ressemble:

enter image description here

Ceci est mon objectif:

enter image description here

EDIT:

code mis à jour pour inclure une stackpane

<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0"> 
      <children> 
      <StackPane prefHeight="150.0" prefWidth="200.0"> 
       <children> 
       <ListView fx:id="list" /> 
       <ProgressIndicator fx:id="bar" /> 
       </children> 
      </StackPane> 
      </children> 
     </AnchorPane> 
+0

donc, quel est le problème? –

+0

@SergeyGrinev Comme vous pouvez le voir dans ma première photo, la vue d'avancement apparaît en haut à gauche, mais je veux qu'elle reste centrée dans son parent. – EGHDK

+2

Pourquoi ne pas simplement utiliser un 'StackPane'? Ou pourquoi ne pas définir l'alignement? – fabian

Répondre

1

Essayez ceci:

La clé de remplissage du StackPane est de régler la maxHeight de ListView et maxWidth à Double.MAX_VALUE .

<children> 
    <StackPane AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> 
    <children> 
     <ListView maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" /> 
     <ProgressIndicator maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" progress="0.44"> 
      <StackPane.margin> 
       <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> 
      </StackPane.margin> 
     </ProgressIndicator> 
    </children> 
    </StackPane> 

Le prefHeight et prefWidth pour le StackPane et ListView peut ne pas refléter ce que vous avez dans votre message original. Vous pouvez changer ces valeurs pour répondre à vos besoins. J'ai également placé des contraintes sur le StackPane de sorte qu'il remplisse son parent AnchorPane.

SceneBuilder Images:

StackPane Layout Properties ListView Layout Properties ProgressIndicator Layout Properties

Vous pouvez avoir besoin de mettre le côté préféré de ProgressIndicator

+0

Génial. Mon seul problème avec ceci est que la hauteur et la largeur ne sont pas fixes. L'indicateur de progression est énorme. Un moyen de le garder à sa taille par défaut? Désolé s'il n'y a pas une telle chose, mais je viens d'un fond Android et je peux définir une hauteur et la largeur de la barre de progression pour "envelopper le contenu" et il prend juste une hauteur et une largeur par défaut. Quelque chose comme ça ou dois-je définir quelque chose spécifiquement? – EGHDK

+0

Définir la taille préférée et définir la taille maximale à la taille préférée. – Sedrick

+0

Merci. Je ne savais pas s'il y avait une valeur par défaut. – EGHDK