2012-09-28 5 views
2

J'ai une instance simple BorderPane qui est le nœud racine de mon Scene. Le panneau de bordure comprend un panneau sur le côté droit avec des contrôles de l'interface graphique, y compris un bouton. Lorsque je clique sur ce bouton, je crée une instance de classe (Foo) qui s'étend StackPane et je mets cette instance en tant que nœud central du volet de bordure.Obtention de la largeur et de la hauteur de l'espace central dans un BorderPane (JavaFX 2)

Je voudrais obtenir les valeurs de largeur et hauteur de l'espace central disponible du volet frontière de l'instance Foo en appelant this.getLayoutBounds.getWidth(), respectivement ...getHeight() mais il retourne toujours zéro?

Répondre

5

Ajoutez un écouteur au layoutBoundsProperty de StackPane ou liez-lui ses propriétés height et width. JavaFX retournera juste zéro pour la hauteur et la largeur du StackPane jusqu'à ce qu'il ait exécuté un passage de disposition sur lui. Parce qu'un StackPane est un noeud redimensionnable, JavaFX ne sait généralement pas quelle taille il va être jusqu'à ce qu'il ait été ajouté à une scène et affiché sur une scène.

Si vous voulez seulement connaître sa taille initiale, vous pouvez appeler getHeight ou getWidth sur le StackPane après avoir appelé stage.Show. Les passes de mise en page futures peuvent redimensionner le StackPane en fonction des changements de zone disponibles, d'où la recommandation d'utiliser des écouteurs ou des liaisons si vous souhaitez toujours être informé de la taille du volet en cours.

Questions connexes