web-dev-qa-db-fra.com

Comment aligner l'étiquette centrale dans JavaFX / FXML?

Comment centrer le texte d'une étiquette dans javafx? Dans la feuille de style .css ou directement dans le fxml.

J'ai essayé Label { -fx-text-alignment: center;} dans le .css mais cela ne fonctionne pas. Même dans le générateur de scène, cela ne fonctionne pas.

7
Mourad Qqch

Vous avez essentiellement deux choix:

  1. Utilisez un volet de mise en page qui peut centrer l'étiquette et laissez l'étiquette être sa "taille préférée" (c'est-à-dire juste assez grande pour contenir le texte), ou
  2. Faites en sorte que l'étiquette remplisse toute la largeur de son conteneur et définissez sa propriété d'alignement au centre.

Vous avez dit dans les commentaires que vous utilisez un AnchorPane comme parent du label. Ce n'est généralement pas un choix particulièrement bon pour un volet de disposition (vous devez essentiellement coder en dur les limites de chaque contrôle), et vous ne pouvez pas centrer les choses dedans (pas sans une grande quantité de travail, de toute façon). Donc, avec un volet d'ancrage comme parent, vous êtes réduit au choix 2:

label.setMaxWidth(Double.MAX_VALUE);
AnchorPane.setLeftAnchor(label, 0.0);
AnchorPane.setRightAnchor(label, 0.0);
label.setAlignment(Pos.CENTER);

Évidemment, tout cela peut également être défini dans FXML.

En général, cependant, je recommanderais d'utiliser un volet de présentation plus approprié et de définir les propriétés appropriées sur ce volet de présentation pour centrer l'étiquette.

16
James_D