Java - 12.2 BorderPane : centrer un label dans la zone du haut

Un BorderPane découpe la fenêtre en zones : le haut, le bas, la gauche, la droite et le centre. Cette leçon poursuit la découverte de ce conteneur. Elle explique pourquoi un label placé en haut ne semble pas centré, puis comment corriger ce comportement.

Placer un label en haut

Un label contient un texte. La vidéo le place dans la zone du haut, puis lui donne un alignement au centre.

Pourtant, le texte reste collé à gauche. Le label occupe toute la largeur de sa zone, et le réglage d'alignement du label ne suffit pas à le centrer dans cette zone.

La vidéo rappelle que la plupart des contrôles ne remplissent pas forcément la largeur de leur zone. Le label de la zone du haut se comporte donc différemment, car il occupe toute la largeur.

Aligner l'enfant dans sa zone

On ne peut pas aligner le BorderPane lui-même. L'alignement se règle sur chaque enfant, avec la méthode BorderPane.setAlignment, qui reçoit le label et la position souhaitée.

La vidéo applique la même démarche aux zones de gauche et de droite. Pour la zone centrale, elle ajoute un label avec un texte long, afin de voir comment le texte se comporte lorsqu'il manque de place.

Les zones de gauche et de droite fonctionnent de la même façon. Le label y est dimensionné à sa largeur préférée, puis placé dans la zone avant son alignement.

BorderPane.setAlignment(label, Pos.CENTER);

En résumé

Un BorderPane répartit ses contrôles dans cinq zones. Un label placé dans une zone occupe toute sa largeur. Pour le centrer dans sa zone, l'alignement se règle sur l'enfant avec BorderPane.setAlignment. La zone centrale occupe l'espace restant entre les autres zones.

Points clés

  • Un BorderPane répartit ses contrôles dans les zones haut, bas, gauche, droite et centre.
  • Un label placé en haut occupe toute la largeur de sa zone.
  • L'alignement d'un enfant de BorderPane se règle sur l'enfant lui-même.
  • BorderPane.setAlignment permet de centrer un enfant dans sa zone.
  • La zone centrale prend l'espace qui reste entre les autres zones.

Questions fréquentes

Pourquoi mon texte reste-t-il à gauche ?

Le label occupe toute la largeur de sa zone. Il faut donc régler l'alignement de l'enfant dans cette zone, et non celui du conteneur.

Peut-on aligner le BorderPane lui-même ?

La vidéo explique que ce n'est pas possible. On définit l'alignement sur chaque enfant avec BorderPane.setAlignment.

Que contient la zone centrale ?

Elle reçoit le contenu principal. Elle occupe l'espace qui reste après les zones du haut, du bas, de gauche et de droite.