3.3Organisation et dimensionnement
3.3.1 â Alignments et spacing
L'alignement et l'espacement sont deux concepts fondamentaux pour créer des interfaces JavaFX bien organisées et visuellement équilibrées. L'alignement détermine comment les éléments sont positionnés dans leur conteneur, tandis que l'espacement contrÎle la distance entre les éléments. Dans cette section, vous apprendrez à utiliser ces propriétés dans Scene Builder pour créer des interfaces professionnelles.
đŻ Qu'est-ce que l'alignement ?
L'alignement détermine la position des éléments enfants dans leur conteneur. Il existe différents types d'alignement selon le layout utilisé :
- Alignement dans HBox/VBox : Aligne les éléments verticalement (HBox) ou horizontalement (VBox)
- Alignement dans GridPane : Aligne les éléments dans chaque cellule (horizontalement et verticalement)
- Alignement dans BorderPane : Les zones sont déjà positionnées, mais vous pouvez aligner le contenu dans chaque zone
- Alignement dans StackPane : Aligne les éléments superposés
đ Types d'alignement disponibles
JavaFX offre plusieurs options d'alignement. Voici les principales :
Alignements pour HBox et VBox
- TOP_LEFT : En haut Ă gauche
- TOP_CENTER : En haut au centre
- TOP_RIGHT : En haut Ă droite
- CENTER_LEFT : Au centre vertical, Ă gauche
- CENTER : Centré horizontalement et verticalement
- CENTER_RIGHT : Au centre vertical, Ă droite
- BOTTOM_LEFT : En bas Ă gauche
- BOTTOM_CENTER : En bas au centre
- BOTTOM_RIGHT : En bas Ă droite
Alignements pour GridPane
Dans un GridPane, vous pouvez aligner chaque élément dans sa cellule :
- Halignment : Alignement horizontal (LEFT, CENTER, RIGHT)
- Valignment : Alignement vertical (TOP, CENTER, BOTTOM)
đ ïž Configurer l'alignement dans Scene Builder
Voici comment configurer l'alignement dans Scene Builder :
Pour HBox et VBox
- Sélectionnez le HBox ou VBox
- Dans l'onglet Layout de l'inspecteur
- Modifiez la propriété Alignment
- Choisissez parmi les options disponibles (CENTER, TOP_LEFT, etc.)
Pour GridPane
- Sélectionnez un élément enfant dans le GridPane
- Dans l'onglet Layout de l'inspecteur
- Modifiez Halignment pour l'alignement horizontal
- Modifiez Valignment pour l'alignement vertical
đ Qu'est-ce que le spacing ?
Le spacing (espacement) définit la distance uniforme entre les éléments enfants d'un conteneur. C'est une propriété importante pour créer des interfaces aérées et professionnelles.
- Spacing dans HBox : Espacement horizontal entre les éléments
- Spacing dans VBox : Espacement vertical entre les éléments
- Hgap dans GridPane/FlowPane : Espacement horizontal entre les colonnes
- Vgap dans GridPane/FlowPane : Espacement vertical entre les lignes
⹠Spacing : Espacement entre les éléments enfants (à l'intérieur du conteneur)
⹠Padding : Espacement entre le conteneur et ses bords (marge intérieure)
⹠Le spacing sépare les éléments entre eux, le padding sépare le contenu des bords
đ ïž Configurer le spacing dans Scene Builder
Voici comment configurer l'espacement dans Scene Builder :
Pour HBox et VBox
- Sélectionnez le HBox ou VBox
- Dans l'onglet Properties de l'inspecteur
- Modifiez la propriété Spacing
- Entrez une valeur en pixels (ex:
10,15,20)
Pour GridPane, FlowPane, TilePane
- Sélectionnez le conteneur
- Dans l'onglet Properties de l'inspecteur
- Modifiez Hgap pour l'espacement horizontal
- Modifiez Vgap pour l'espacement vertical
đ Exemple pratique : Formulaire avec alignement et espacement
Créons un formulaire bien aligné avec un espacement cohérent :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un VBox comme racine
- Sélectionnez le VBox et configurez :
- Spacing =
15 - Alignment =
CENTER - Padding =
20
- Spacing =
- Ajoutez les éléments suivants :
- Un Label "Inscription" (titre, style avec grande police)
- Un HBox avec :
- Spacing =
10 - Alignment =
CENTER_LEFT - Contient un Label "Nom :" et un TextField
- Spacing =
- Un autre HBox similaire pour "Email :"
- Un HBox avec deux Button "Annuler" et "Valider" :
- Spacing =
10 - Alignment =
CENTER
- Spacing =
Vous obtenez un formulaire bien organisé avec un espacement uniforme de 15 pixels entre chaque section, tous les éléments centrés horizontalement, et des groupes d'éléments (Label + TextField) alignés à gauche dans des HBox.
Exemple
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.*?>
<VBox spacing="15.0" alignment="CENTER" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1">
<padding>
<Insets top="20.0" right="20.0" bottom="20.0" left="20.0"/>
</padding>
<children>
<Label text="Inscription" style="-fx-font-size: 24px; -fx-font-weight: bold;"/>
<HBox spacing="10.0" alignment="CENTER_LEFT">
<children>
<Label text="Nom :" prefWidth="80.0"/>
<TextField prefWidth="200.0"/>
</children>
</HBox>
<HBox spacing="10.0" alignment="CENTER_LEFT">
<children>
<Label text="Email :" prefWidth="80.0"/>
<TextField prefWidth="200.0"/>
</children>
</HBox>
<HBox spacing="10.0" alignment="CENTER">
<children>
<Button text="Annuler"/>
<Button text="Valider"/>
</children>
</HBox>
</children>
</VBox>
âą
spacing="15.0" : Espacement de 15 pixels entre les Ă©lĂ©ments du VBoxâą
alignment="CENTER" : Alignement centrĂ© des Ă©lĂ©ments dans le VBoxâą
alignment="CENTER_LEFT" : Alignement centrĂ© verticalement, Ă gauche horizontalement pour les HBox de champsâą
alignment="CENTER" : Alignement centré pour les boutons⹠L'espacement uniforme crée une apparence professionnelle et équilibrée
đĄ Bonnes pratiques pour l'alignement et l'espacement
- Utilisez un spacing cohérent : Choisissez une valeur uniforme (ex: 10px, 15px, 20px) pour toute l'interface
- Centrez les éléments principaux : Utilisez CENTER pour les éléments centraux de l'interface
- Alignez les labels à gauche : Dans les formulaires, alignez les labels à gauche pour une meilleure lisibilité
- Pensez à la hiérarchie visuelle : Utilisez différents alignements pour créer une hiérarchie
- Testez avec différents contenus : Vérifiez que l'alignement fonctionne avec différents contenus
- Ăvitez les espacements trop grands ou trop petits : 10-20 pixels est gĂ©nĂ©ralement un bon compromis
đ Alignement vs autres propriĂ©tĂ©s
L'alignement fonctionne en combinaison avec d'autres propriétés :
- Alignement + Padding : L'alignement positionne les éléments, le padding crée de l'espace autour
- Alignement + Spacing : L'alignement organise les éléments, le spacing les sépare
- Alignement + Marges : Les marges individuelles peuvent surcharger l'alignement général
3.3.2 â Margins et paddings
Les marges (margins) et les paddings (marges intérieures) sont deux concepts essentiels pour créer des interfaces avec un espacement professionnel. Bien que similaires, ils ont des rÎles différents : le padding crée de l'espace à l'intérieur d'un conteneur, tandis que les marges créent de l'espace autour d'un élément spécifique. Dans cette section, vous apprendrez à utiliser ces propriétés dans Scene Builder.
đŻ Qu'est-ce que le padding ?
Le padding (marge intĂ©rieure) est l'espace entre le contenu d'un conteneur et ses bords intĂ©rieurs. Il s'applique au conteneur lui-mĂȘme et affecte tous les Ă©lĂ©ments enfants.
- Padding uniforme : MĂȘme espacement sur tous les cĂŽtĂ©s
- Padding individuel : Espacement différent pour chaque cÎté (top, right, bottom, left)
- Effet visuel : Crée de l'espace entre les bords du conteneur et son contenu
đŻ Qu'est-ce qu'une margin ?
La margin (marge) est l'espace autour d'un élément spécifique, à l'extérieur de ses bords. Elle s'applique à un élément individuel et crée de l'espace entre cet élément et les éléments voisins ou les bords du conteneur.
- Margin uniforme : MĂȘme espacement sur tous les cĂŽtĂ©s
- Margin individuelle : Espacement différent pour chaque cÎté
- Effet visuel : Crée de l'espace autour d'un élément spécifique
⹠Padding : à l'intérieur du conteneur, crée de l'espace entre le conteneur et ses enfants
⹠Margin : à l'extérieur de l'élément, crée de l'espace entre l'élément et ses voisins
⹠Le padding affecte tous les enfants, la margin affecte seulement l'élément spécifique
đ ïž Configurer le padding dans Scene Builder
Voici comment configurer le padding dans Scene Builder :
Ătape 1 : SĂ©lectionner le conteneur
- Sélectionnez le conteneur (VBox, HBox, GridPane, etc.)
- Ouvrez l'onglet Layout dans l'inspecteur
Ătape 2 : Configurer le padding
Dans la section Padding, vous pouvez :
- Padding uniforme : Entrez une valeur unique qui s'applique aux quatre cÎtés
- Padding individuel : Configurez séparément :
- Top : Espacement en haut
- Right : Espacement Ă droite
- Bottom : Espacement en bas
- Left : Espacement Ă gauche
đ ïž Configurer les marges dans Scene Builder
Voici comment configurer les marges dans Scene Builder :
Ătape 1 : SĂ©lectionner l'Ă©lĂ©ment enfant
- Sélectionnez un élément enfant dans un conteneur (Button, Label, TextField, etc.)
- Ouvrez l'onglet Layout dans l'inspecteur
Ătape 2 : Configurer la margin
Dans la section Margin, vous pouvez :
- Margin uniforme : Entrez une valeur unique qui s'applique aux quatre cÎtés
- Margin individuelle : Configurez séparément :
- Top : Marge en haut
- Right : Marge Ă droite
- Bottom : Marge en bas
- Left : Marge Ă gauche
đ Exemple pratique : Interface avec padding et marges
Créons une interface qui illustre l'utilisation du padding et des marges :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un VBox comme racine
- Sélectionnez le VBox et configurez le padding :
- Padding =
20(uniforme sur tous les cÎtés) - Spacing =
10
- Padding =
- Ajoutez un Label "Titre" avec :
- Margin Bottom =
15(marge en bas pour séparer du contenu suivant)
- Margin Bottom =
- Ajoutez un HBox avec :
- Padding =
10 - Contient deux Button
- Padding =
- Le premier Button a :
- Margin Right =
10(marge à droite pour séparer du deuxiÚme bouton)
- Margin Right =
Vous obtenez une interface avec un padding de 20 pixels autour du contenu principal, un espacement de 10 pixels entre les éléments, une marge de 15 pixels sous le titre, et une marge de 10 pixels entre les deux boutons. L'espacement est clair et professionnel.
Exemple
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.*?>
<VBox spacing="10.0" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1">
<padding>
<Insets top="20.0" right="20.0" bottom="20.0" left="20.0"/>
</padding>
<children>
<Label text="Titre" style="-fx-font-size: 18px; -fx-font-weight: bold;">
<VBox.margin>
<Insets bottom="15.0"/>
</VBox.margin>
</Label>
<Label text="Contenu principal"/>
<HBox spacing="10.0">
<padding>
<Insets top="10.0" right="10.0" bottom="10.0" left="10.0"/>
</padding>
<children>
<Button text="Bouton 1">
<HBox.margin>
<Insets right="10.0"/>
</HBox.margin>
</Button>
<Button text="Bouton 2"/>
</children>
</HBox>
</children>
</VBox>
âą
<padding><Insets top="20.0" right="20.0" bottom="20.0" left="20.0"/></padding> : Padding de 20 pixels sur tous les cĂŽtĂ©s du VBoxâą
<VBox.margin><Insets bottom="15.0"/></VBox.margin> : Marge de 15 pixels en bas du Label (spĂ©cifique Ă cet Ă©lĂ©ment)âą
<HBox.margin><Insets right="10.0"/></HBox.margin> : Marge de 10 pixels à droite du premier Button⹠Le padding crée de l'espace autour du contenu, les marges créent de l'espace autour d'éléments spécifiques
âïž PropriĂ©tĂ©s de padding et margin
Voici les propriétés disponibles dans Scene Builder :
Padding (pour les conteneurs)
- Top : Espacement en haut (en pixels)
- Right : Espacement Ă droite (en pixels)
- Bottom : Espacement en bas (en pixels)
- Left : Espacement Ă gauche (en pixels)
- Uniform : Valeur unique pour les quatre cÎtés
Margin (pour les éléments enfants)
- Top : Marge en haut (en pixels)
- Right : Marge Ă droite (en pixels)
- Bottom : Marge en bas (en pixels)
- Left : Marge Ă gauche (en pixels)
- Uniform : Valeur unique pour les quatre cÎtés
đĄ Bonnes pratiques pour padding et margin
- Utilisez le padding pour le conteneur : Créez de l'espace autour de tout le contenu
- Utilisez les marges pour des éléments spécifiques : Créez de l'espace autour d'un élément particulier
- Valeurs cohérentes : Utilisez des valeurs cohérentes (multiples de 5 ou 10) pour un rendu professionnel
- Padding généralement plus grand : Le padding du conteneur est souvent plus grand que les marges individuelles
- Testez visuellement : Ajustez les valeurs dans Scene Builder pour voir l'effet immédiatement
- Ăvitez les valeurs trop grandes : Trop d'espace peut rendre l'interface vide et peu efficace
đ Padding vs Margin : Quand utiliser quoi ?
Voici des rÚgles simples pour décider quand utiliser le padding ou les marges :
â Utilisez le padding quand :
- Vous voulez créer de l'espace autour de tout le contenu d'un conteneur
- Vous voulez que tous les Ă©lĂ©ments enfants aient le mĂȘme espacement des bords
- Vous voulez créer une zone "intérieure" dans un conteneur
â Utilisez les marges quand :
- Vous voulez créer de l'espace autour d'un élément spécifique
- Vous voulez séparer un élément particulier des autres
- Vous voulez créer un espacement différent pour certains éléments
3.3.3 â Redimensionnement automatique
Le redimensionnement automatique permet aux Ă©lĂ©ments de s'adapter Ă la taille de leur conteneur ou de la fenĂȘtre. En JavaFX, vous pouvez contrĂŽler comment les Ă©lĂ©ments se redimensionnent grĂące aux propriĂ©tĂ©s de croissance (grow) et aux contraintes de taille (min, pref, max). Dans cette section, vous apprendrez Ă configurer le redimensionnement automatique dans Scene Builder pour crĂ©er des interfaces adaptatives.
đŻ Qu'est-ce que le redimensionnement automatique ?
Le redimensionnement automatique permet aux éléments de :
- S'étirer : Prendre plus d'espace quand disponible
- Se rétrécir : Réduire leur taille quand l'espace est limité
- S'adapter : S'ajuster automatiquement aux changements de taille de la fenĂȘtre
- Respecter les contraintes : Rester dans les limites min/max définies
đ PropriĂ©tĂ©s de taille : Min, Pref, Max
Chaque élément JavaFX a trois propriétés de taille :
- Min Width / Min Height : Taille minimale que l'élément peut avoir
- Pref Width / Pref Height : Taille préférée (idéale) de l'élément
- Max Width / Max Height : Taille maximale que l'élément peut avoir
âą Min : L'Ă©lĂ©ment ne peut pas ĂȘtre plus petit que cette taille
⹠Pref : C'est la taille que l'élément préfÚre avoir (sa taille "naturelle")
âą Max : L'Ă©lĂ©ment ne peut pas ĂȘtre plus grand que cette taille (ou USE_PREF_SIZE pour utiliser la taille prĂ©fĂ©rĂ©e)
âą Le layout essaie de respecter ces contraintes lors du redimensionnement
đ ïž Configurer les tailles dans Scene Builder
Voici comment configurer les tailles dans Scene Builder :
Ătape 1 : SĂ©lectionner l'Ă©lĂ©ment
- Sélectionnez l'élément (Button, Label, TextField, etc.)
- Ouvrez l'onglet Properties dans l'inspecteur
Ătape 2 : Configurer les tailles
Dans la section Size, configurez :
- Min Width / Min Height : Taille minimale (en pixels ou laissez vide pour auto)
- Pref Width / Pref Height : Taille préférée (en pixels)
- Max Width / Max Height : Taille maximale (en pixels ou USE_PREF_SIZE)
đ PropriĂ©tĂ©s de croissance : Hgrow et Vgrow
Les propriétés Hgrow (croissance horizontale) et Vgrow (croissance verticale) contrÎlent si un élément peut s'étirer pour remplir l'espace disponible.
Valeurs possibles :
- NEVER : L'élément garde toujours sa taille préférée, ne s'étire jamais
- ALWAYS : L'élément s'étire toujours pour remplir l'espace disponible
- SOMETIMES : L'élément s'étire seulement si nécessaire (comportement par défaut pour certains layouts)
đ ïž Configurer Hgrow et Vgrow dans Scene Builder
Voici comment configurer la croissance dans Scene Builder :
Pour les éléments dans HBox
- Sélectionnez un élément enfant dans un HBox
- Ouvrez l'onglet Layout dans l'inspecteur
- Modifiez la propriété Hgrow :
- NEVER : L'élément garde sa largeur
- ALWAYS : L'élément s'étire horizontalement
- SOMETIMES : S'étire si nécessaire
Pour les éléments dans VBox
- Sélectionnez un élément enfant dans un VBox
- Ouvrez l'onglet Layout dans l'inspecteur
- Modifiez la propriété Vgrow :
- NEVER : L'élément garde sa hauteur
- ALWAYS : L'élément s'étire verticalement
- SOMETIMES : S'étire si nécessaire
Pour les éléments dans GridPane
- Sélectionnez un élément dans un GridPane
- Ouvrez l'onglet Layout dans l'inspecteur
- Configurez Hgrow pour la croissance horizontale de la colonne
- Configurez Vgrow pour la croissance verticale de la ligne
đ Exemple pratique : Interface adaptative
Créons une interface qui s'adapte au redimensionnement :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un BorderPane comme racine
- Zone Center : Ajoutez un VBox et configurez :
- Vgrow =
ALWAYS(pour le VBox dans le BorderPane)
- Vgrow =
- Dans ce VBox, ajoutez :
- Un Label "Titre" (taille fixe, ne s'étire pas)
- Un TextArea avec :
- Vgrow =
ALWAYS(s'étire verticalement) - Hgrow =
ALWAYS(s'étire horizontalement)
- Vgrow =
- Un HBox avec deux Button :
- Le premier Button : Hgrow =
ALWAYS(s'étire horizontalement) - Le deuxiÚme Button : Hgrow =
NEVER(taille fixe)
- Le premier Button : Hgrow =
Quand vous redimensionnez la fenĂȘtre, le TextArea s'Ă©tire pour remplir l'espace disponible, le premier bouton s'Ă©tire horizontalement, et le deuxiĂšme bouton garde sa taille fixe. L'interface s'adapte automatiquement aux changements de taille.
Exemple
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.*?>
<BorderPane xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1">
<center>
<VBox spacing="10.0">
<padding>
<Insets top="20.0" right="20.0" bottom="20.0" left="20.0"/>
</padding>
<children>
<Label text="Titre" style="-fx-font-size: 18px; -fx-font-weight: bold;"/>
<TextArea wrapText="true" VBox.vgrow="ALWAYS"/>
<HBox spacing="10.0">
<children>
<Button text="Bouton qui s'étire" HBox.hgrow="ALWAYS"/>
<Button text="Bouton fixe" HBox.hgrow="NEVER"/>
</children>
</HBox>
</children>
</VBox>
</center>
</BorderPane>
âą
VBox.vgrow="ALWAYS" : Le TextArea s'Ă©tire verticalement pour remplir l'espace disponible dans le VBoxâą
HBox.hgrow="ALWAYS" : Le TextArea s'Ă©tire aussi horizontalement (si dans un HBox)âą
HBox.hgrow="ALWAYS" sur le premier Button : Le bouton s'Ă©tire horizontalementâą
HBox.hgrow="NEVER" sur le deuxiĂšme Button : Le bouton garde sa taille fixeâą Quand la fenĂȘtre est redimensionnĂ©e, les Ă©lĂ©ments avec ALWAYS s'adaptent automatiquement
âïž PropriĂ©tĂ©s de redimensionnement
Voici un résumé des propriétés importantes pour le redimensionnement :
Propriétés de taille (onglet Properties)
- Min Width / Min Height : Taille minimale (en pixels)
- Pref Width / Pref Height : Taille préférée (en pixels)
- Max Width / Max Height : Taille maximale (en pixels ou USE_PREF_SIZE)
Propriétés de croissance (onglet Layout)
- Hgrow : Croissance horizontale (NEVER, ALWAYS, SOMETIMES)
- Vgrow : Croissance verticale (NEVER, ALWAYS, SOMETIMES)
đĄ Bonnes pratiques pour le redimensionnement
- Utilisez ALWAYS pour les éléments principaux : Les zones de contenu principales doivent souvent s'étirer
- Utilisez NEVER pour les boutons et labels : Les éléments de contrÎle gardent généralement une taille fixe
- Définissez des tailles min/max : Protégez vos éléments avec des limites raisonnables
- Testez le redimensionnement : Redimensionnez la fenĂȘtre dans Scene Builder pour voir le comportement
- Pensez aux différentes tailles d'écran : Votre interface doit fonctionner sur différentes résolutions
- Combinez avec les contraintes : Utilisez min/max avec grow pour un contrÎle précis
đ StratĂ©gies de redimensionnement
Voici des stratégies courantes pour différents types d'éléments :
ĂlĂ©ments qui doivent s'Ă©tirer
- TextArea, TextField : Hgrow = ALWAYS, Vgrow = ALWAYS (pour TextArea)
- Zones de contenu principales : S'étirent pour remplir l'espace
- Tableaux et listes : S'étirent pour afficher plus de données
ĂlĂ©ments qui doivent garder leur taille
- Boutons : Hgrow = NEVER, Vgrow = NEVER (taille fixe)
- Labels : Taille basée sur le contenu
- IcĂŽnes : Taille fixe
ĂlĂ©ments conditionnels
- Certains conteneurs : Utilisent SOMETIMES pour s'adapter si nécessaire
- ĂlĂ©ments flexibles : S'Ă©tirent seulement s'il y a de l'espace disponible
đ Exemple complet : Interface complĂštement adaptative
Créons une interface qui illustre tous les concepts de redimensionnement :
Exemple
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.*?>
<BorderPane xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1">
<top>
<Label text="Application Adaptative" style="-fx-font-size: 20px; -fx-font-weight: bold; -fx-padding: 10px;"/>
</top>
<center>
<VBox spacing="10.0">
<padding>
<Insets top="10.0" right="10.0" bottom="10.0" left="10.0"/>
</padding>
<children>
<Label text="Zone de contenu principale"/>
<TextArea wrapText="true" prefHeight="200.0" VBox.vgrow="ALWAYS"/>
</children>
</VBox>
</center>
<bottom>
<HBox spacing="10.0" alignment="CENTER_RIGHT">
<padding>
<Insets top="10.0" right="10.0" bottom="10.0" left="10.0"/>
</padding>
<children>
<Button text="Annuler" HBox.hgrow="NEVER"/>
<Button text="Valider" HBox.hgrow="NEVER"/>
</children>
</HBox>
</bottom>
</BorderPane>
⹠Top (Label) : Taille fixe, ne s'étire pas
âą Center (TextArea) :
VBox.vgrow="ALWAYS" - S'étire verticalement pour remplir l'espace⹠Bottom (Boutons) :
HBox.hgrow="NEVER" - Les boutons gardent leur taille fixeâą Quand vous redimensionnez la fenĂȘtre, seule la zone centrale (TextArea) s'adapte, les autres Ă©lĂ©ments gardent leur taille
đĄ Points clĂ©s Ă retenir
- Min/Pref/Max : Définissent les contraintes de taille d'un élément
- Hgrow/Vgrow : ContrÎlent si un élément peut s'étirer (NEVER, ALWAYS, SOMETIMES)
- ALWAYS : Pour les éléments qui doivent remplir l'espace disponible
- NEVER : Pour les éléments qui doivent garder une taille fixe
- Testez toujours : Redimensionnez la fenĂȘtre pour vĂ©rifier le comportement
- Combinez les propriétés : Utilisez min/max avec grow pour un contrÎle précis