3.1Les conteneurs essentiels (Layouts)
3.1.1 â HBox
Le HBox (Horizontal Box) est un conteneur qui organise ses éléments enfants horizontalement, c'est-à -dire cÎte à cÎte, de gauche à droite. C'est l'un des layouts les plus simples et les plus utilisés pour créer des barres d'outils, des boutons alignés, ou des éléments disposés en ligne.
đŻ Qu'est-ce qu'un HBox ?
Le HBox est un conteneur qui :
- Organise horizontalement : Place les éléments enfants les uns à cÎté des autres, de gauche à droite
- GÚre automatiquement l'espacement : Permet de définir un espacement uniforme entre les éléments
- GÚre l'alignement : Permet d'aligner les éléments verticalement (haut, centre, bas)
- Redimensionne automatiquement : Les éléments peuvent s'étirer pour remplir l'espace disponible
đ Cas d'utilisation du HBox
Le HBox est particuliĂšrement utile pour :
- Barres d'outils : Aligner des boutons ou des icĂŽnes horizontalement
- Formulaires : Placer un Label à cÎté d'un TextField
- Boutons d'action : Grouper plusieurs boutons (Annuler, Valider, etc.)
- ĂlĂ©ments de navigation : CrĂ©er une barre de navigation horizontale
- Statistiques : Afficher plusieurs valeurs cĂŽte Ă cĂŽte
Les trois boutons (Nouveau, Ouvrir, Enregistrer) sont alignés horizontalement dans un HBox avec un espacement uniforme.
đ ïž CrĂ©er un HBox dans Scene Builder
Voici comment créer et configurer un HBox dans Scene Builder :
Ătape 1 : Ajouter un HBox
- Ouvrez Scene Builder
- Dans le panneau Library, trouvez la catégorie Containers
- Glissez-déposez un HBox dans la zone de conception
- Le HBox apparaßt comme un rectangle avec des bordures pointillées
Ătape 2 : Configurer les propriĂ©tĂ©s du HBox
Sélectionnez le HBox et configurez ses propriétés dans l'inspecteur :
- Spacing : Espacement en pixels entre les éléments enfants (ex:
10) - Alignment : Alignement vertical des éléments (TOP_LEFT, CENTER, BOTTOM_RIGHT, etc.)
- Padding : Marge intérieure autour du contenu (dans l'onglet Layout)
- Pref Width / Pref Height : Taille préférée du conteneur
Ătape 3 : Ajouter des Ă©lĂ©ments dans le HBox
Pour ajouter des composants dans le HBox :
- Glissez-déposez des composants (Label, Button, TextField, etc.) depuis la Library dans le HBox
- Les composants s'alignent automatiquement horizontalement
- Vous pouvez réorganiser l'ordre en glissant les éléments dans la vue hiérarchique
đ Exemple pratique : Barre d'outils avec HBox
Créons une barre d'outils simple avec plusieurs boutons alignés horizontalement :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un VBox comme racine (pour avoir de l'espace pour d'autres éléments)
- Glissez un HBox dans le VBox
- Sélectionnez le HBox et configurez :
- Spacing :
10 - Padding :
10(dans l'onglet Layout) - Alignment :
CENTER
- Spacing :
- Ajoutez trois Button dans le HBox :
- Premier bouton : Text = "Nouveau"
- DeuxiĂšme bouton : Text = "Ouvrir"
- TroisiĂšme bouton : Text = "Enregistrer"
Vous obtenez une barre d'outils avec trois boutons alignés horizontalement, espacés de 10 pixels, avec un padding de 10 pixels autour, et centrés dans le HBox.
Exemple
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.*?>
<VBox xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1">
<children>
<HBox spacing="10" alignment="CENTER">
<padding>
<Insets top="10.0" right="10.0" bottom="10.0" left="10.0"/>
</padding>
<children>
<Button text="Nouveau"/>
<Button text="Ouvrir"/>
<Button text="Enregistrer"/>
</children>
</HBox>
</children>
</VBox>
âą
<HBox spacing="10" alignment="CENTER"> : CrĂ©e un HBox avec un espacement de 10 pixels et un alignement centrĂ©âą
<padding><Insets .../></padding> : DĂ©finit un padding de 10 pixels sur tous les cĂŽtĂ©sâą
<children> : Contient les trois boutons qui seront alignés horizontalement⹠Les boutons sont ajoutés dans l'ordre : "Nouveau", "Ouvrir", "Enregistrer"
âïž PropriĂ©tĂ©s importantes du HBox
Voici les propriétés les plus utilisées pour configurer un HBox dans Scene Builder :
Propriétés de base (onglet Properties)
- Spacing : Espacement horizontal entre les éléments (en pixels)
- Pref Width : Largeur préférée du conteneur
- Pref Height : Hauteur préférée du conteneur
Propriétés de layout (onglet Layout)
- Alignment : Alignement vertical des éléments (TOP_LEFT, TOP_CENTER, TOP_RIGHT, CENTER_LEFT, CENTER, CENTER_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT)
- Padding : Marge intérieure (Top, Right, Bottom, Left)
Propriétés des enfants dans le HBox
Quand vous sélectionnez un élément enfant du HBox, vous pouvez configurer :
- Hgrow : Permet à l'élément de s'étirer horizontalement (NEVER, ALWAYS, SOMETIMES)
- Margin : Marge autour de l'élément spécifique
⹠NEVER : L'élément garde sa taille naturelle
⹠ALWAYS : L'élément s'étire pour remplir l'espace disponible
⹠SOMETIMES : L'élément s'étire seulement si nécessaire
đĄ Bonnes pratiques avec HBox
- Utilisez un spacing cohérent : Choisissez un espacement uniforme (ex: 10px) pour une apparence professionnelle
- Pensez au padding : Ajoutez du padding pour éviter que les éléments touchent les bords
- Alignez verticalement : Utilisez l'alignement pour centrer ou aligner les éléments selon vos besoins
- Combinez avec d'autres layouts : Un HBox peut contenir d'autres layouts (VBox, GridPane, etc.) pour des structures complexes
đ HBox vs autres layouts
Comparons le HBox avec d'autres layouts similaires :
- HBox vs VBox : HBox organise horizontalement, VBox organise verticalement
- HBox vs FlowPane : HBox place les éléments en une seule ligne, FlowPane peut passer à la ligne suivante si nécessaire
- HBox vs GridPane : HBox est linéaire, GridPane permet une organisation en grille bidimensionnelle
3.1.2 â VBox
Le VBox (Vertical Box) est un conteneur qui organise ses éléments enfants verticalement, c'est-à -dire les uns en dessous des autres, de haut en bas. C'est le layout le plus couramment utilisé pour créer des formulaires, des listes d'éléments, ou des interfaces organisées en colonnes verticales.
đŻ Qu'est-ce qu'un VBox ?
Le VBox est un conteneur qui :
- Organise verticalement : Place les éléments enfants les uns en dessous des autres, de haut en bas
- GÚre automatiquement l'espacement : Permet de définir un espacement uniforme entre les éléments
- GÚre l'alignement : Permet d'aligner les éléments horizontalement (gauche, centre, droite)
- Redimensionne automatiquement : Les éléments peuvent s'étirer pour remplir l'espace disponible
đ Cas d'utilisation du VBox
Le VBox est particuliĂšrement utile pour :
- Formulaires : Organiser des champs de saisie verticalement (Label, TextField, Button)
- Listes d'éléments : Afficher une série d'éléments empilés
- Panneaux de configuration : Organiser des options de configuration
- Cartes de contenu : Créer des cartes avec titre, contenu et actions
- Structure principale : Organiser la structure gĂ©nĂ©rale d'une fenĂȘtre
Formulaire de connexion avec les éléments empilés verticalement : titre, champs de saisie et boutons organisés dans un VBox.
đ ïž CrĂ©er un VBox dans Scene Builder
Voici comment créer et configurer un VBox dans Scene Builder :
Ătape 1 : Ajouter un VBox
- Ouvrez Scene Builder
- Dans le panneau Library, trouvez la catégorie Containers
- Glissez-déposez un VBox dans la zone de conception
- Le VBox apparaßt comme un rectangle avec des bordures pointillées
Ătape 2 : Configurer les propriĂ©tĂ©s du VBox
Sélectionnez le VBox et configurez ses propriétés dans l'inspecteur :
- Spacing : Espacement en pixels entre les éléments enfants (ex:
15) - Alignment : Alignement horizontal des éléments (TOP_LEFT, CENTER, TOP_RIGHT, etc.)
- Padding : Marge intérieure autour du contenu (dans l'onglet Layout)
- Pref Width / Pref Height : Taille préférée du conteneur
Ătape 3 : Ajouter des Ă©lĂ©ments dans le VBox
Pour ajouter des composants dans le VBox :
- Glissez-déposez des composants (Label, TextField, Button, etc.) depuis la Library dans le VBox
- Les composants s'alignent automatiquement verticalement
- Vous pouvez réorganiser l'ordre en glissant les éléments dans la vue hiérarchique
đ Exemple pratique : Formulaire de connexion avec VBox
Créons un formulaire de connexion simple avec des champs organisés verticalement :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un VBox comme racine
- Sélectionnez le VBox et configurez :
- Spacing :
15 - Padding :
20(dans l'onglet Layout) - Alignment :
CENTER - Pref Width :
300
- Spacing :
- Ajoutez les composants suivants dans l'ordre :
- Un Label : Text = "Connexion", style avec une grande police
- Un Label : Text = "Nom d'utilisateur"
- Un TextField : Pref Width =
250 - Un Label : Text = "Mot de passe"
- Un PasswordField : Pref Width =
250 - Un HBox (pour aligner les boutons horizontalement) :
- Spacing =
10 - Contient deux Button : "Annuler" et "Connexion"
- Spacing =
Vous obtenez un formulaire de connexion bien organisé avec tous les éléments empilés verticalement, centrés, avec un espacement uniforme de 15 pixels entre chaque élément, et un padding de 20 pixels autour.
Exemple
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.*?>
<VBox spacing="15" 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="Connexion" style="-fx-font-size: 24px; -fx-font-weight: bold;"/>
<Label text="Nom d'utilisateur"/>
<TextField prefWidth="250.0" promptText="Entrez votre nom d'utilisateur"/>
<Label text="Mot de passe"/>
<PasswordField prefWidth="250.0" promptText="Entrez votre mot de passe"/>
<HBox spacing="10.0" alignment="CENTER">
<children>
<Button text="Annuler"/>
<Button text="Connexion"/>
</children>
</HBox>
</children>
</VBox>
âą
<VBox spacing="15" alignment="CENTER"> : CrĂ©e un VBox avec un espacement vertical de 15 pixels et un alignement centrĂ©âą
<padding> : Définit un padding de 20 pixels sur tous les cÎtés⹠Les éléments sont empilés verticalement dans l'ordre : Label titre, Label nom, TextField, Label mot de passe, PasswordField, HBox avec boutons
⹠Le HBox à l'intérieur permet d'aligner les boutons horizontalement
âïž PropriĂ©tĂ©s importantes du VBox
Voici les propriétés les plus utilisées pour configurer un VBox dans Scene Builder :
Propriétés de base (onglet Properties)
- Spacing : Espacement vertical entre les éléments (en pixels)
- Pref Width : Largeur préférée du conteneur
- Pref Height : Hauteur préférée du conteneur
Propriétés de layout (onglet Layout)
- Alignment : Alignement horizontal des éléments (TOP_LEFT, TOP_CENTER, TOP_RIGHT, CENTER_LEFT, CENTER, CENTER_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT)
- Padding : Marge intérieure (Top, Right, Bottom, Left)
Propriétés des enfants dans le VBox
Quand vous sélectionnez un élément enfant du VBox, vous pouvez configurer :
- Vgrow : Permet à l'élément de s'étirer verticalement (NEVER, ALWAYS, SOMETIMES)
- Margin : Marge autour de l'élément spécifique
⹠NEVER : L'élément garde sa taille naturelle
⹠ALWAYS : L'élément s'étire pour remplir l'espace disponible verticalement
⹠SOMETIMES : L'élément s'étire seulement si nécessaire
đĄ Bonnes pratiques avec VBox
- Utilisez un spacing cohérent : Choisissez un espacement uniforme (ex: 10-15px) pour une apparence professionnelle
- Pensez au padding : Ajoutez du padding pour éviter que les éléments touchent les bords
- Centrez le contenu : Utilisez CENTER pour l'alignement pour un rendu équilibré
- Combinez avec HBox : Utilisez des HBox à l'intérieur d'un VBox pour créer des lignes horizontales dans une structure verticale
- Utilisez Vgrow pour les éléments flexibles : Si vous voulez qu'un élément prenne tout l'espace disponible, utilisez Vgrow = ALWAYS
đ VBox vs autres layouts
Comparons le VBox avec d'autres layouts similaires :
- VBox vs HBox : VBox organise verticalement, HBox organise horizontalement
- VBox vs FlowPane : VBox place les éléments en une seule colonne, FlowPane peut créer plusieurs colonnes si nécessaire
- VBox vs GridPane : VBox est linéaire, GridPane permet une organisation en grille bidimensionnelle
3.1.3 â BorderPane
Le BorderPane est un conteneur qui divise l'espace en cinq zones distinctes : top (haut), bottom (bas), left (gauche), right (droite) et center (centre). C'est le layout idéal pour créer des interfaces avec une barre de menu en haut, une barre de statut en bas, des panneaux latéraux, et une zone de contenu principale au centre.
đŻ Qu'est-ce qu'un BorderPane ?
Le BorderPane est un conteneur qui :
- Divise en cinq zones : Top, Bottom, Left, Right, et Center
- Organise automatiquement : Chaque zone a un rÎle spécifique et une position fixe
- GĂšre le redimensionnement : La zone center prend tout l'espace disponible
- Permet des zones optionnelles : Vous n'ĂȘtes pas obligĂ© de remplir toutes les zones
đ Cas d'utilisation du BorderPane
Le BorderPane est particuliĂšrement utile pour :
- Applications principales : Structure standard d'une application avec menu, contenu et statut
- Ăditeurs : Zone d'Ă©dition centrale avec barres d'outils et panneaux latĂ©raux
- Tableaux de bord : Contenu principal au centre avec navigation sur les cÎtés
- Interfaces complexes : Quand vous avez besoin de plusieurs zones distinctes
- Applications de bureau : Structure classique des applications de bureau
Application avec barre de menu en haut, panneau de navigation Ă gauche, zone de contenu principale au centre, et barre de statut en bas.
đ ïž CrĂ©er un BorderPane dans Scene Builder
Voici comment créer et configurer un BorderPane dans Scene Builder :
Ătape 1 : Ajouter un BorderPane
- Ouvrez Scene Builder
- Dans le panneau Library, trouvez la catégorie Containers
- Glissez-déposez un BorderPane dans la zone de conception
- Le BorderPane apparaĂźt avec cinq zones visibles : Top, Bottom, Left, Right, Center
Ătape 2 : Remplir les zones du BorderPane
Pour ajouter du contenu dans chaque zone :
- Zone Top : Glissez un composant (MenuBar, ToolBar, etc.) et déposez-le dans la zone "Top" du BorderPane
- Zone Bottom : Glissez un composant (Label, HBox avec boutons, etc.) et déposez-le dans la zone "Bottom"
- Zone Left : Glissez un composant (VBox avec navigation, ListView, etc.) et déposez-le dans la zone "Left"
- Zone Right : Glissez un composant (panneau d'outils, etc.) et déposez-le dans la zone "Right"
- Zone Center : Glissez votre contenu principal (VBox, GridPane, TableView, etc.) et déposez-le dans la zone "Center"
đ Exemple pratique : Application avec BorderPane
Créons une application simple avec une structure BorderPane complÚte :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un BorderPane comme racine
- Zone Top : Ajoutez un MenuBar avec quelques menus (Fichier, Ădition, Aide)
- Zone Left : Ajoutez un VBox avec :
- Spacing =
5 - Padding =
10 - Contient trois Button : "Accueil", "Profil", "ParamĂštres"
- Spacing =
- Zone Center : Ajoutez un VBox avec :
- Padding =
20 - Contient un Label : "Zone de contenu principal"
- Contient un TextArea pour le contenu
- Padding =
- Zone Bottom : Ajoutez un HBox avec :
- Padding =
5 - Alignment =
CENTER_LEFT - Contient un Label : "PrĂȘt" (barre de statut)
- Padding =
- Zone Right : Laissez vide pour cet exemple (optionnel)
Vous obtenez une application avec une barre de menu en haut, un panneau de navigation Ă gauche, une zone de contenu principale au centre, et une barre de statut en bas. C'est la structure classique d'une application de bureau.
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>
<MenuBar>
<menus>
<Menu mnemonicParsing="false" text="Fichier">
<items>
<MenuItem mnemonicParsing="false" text="Nouveau"/>
<MenuItem mnemonicParsing="false" text="Ouvrir"/>
<SeparatorMenuItem mnemonicParsing="false"/>
<MenuItem mnemonicParsing="false" text="Quitter"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="Ădition">
<items>
<MenuItem mnemonicParsing="false" text="Copier"/>
<MenuItem mnemonicParsing="false" text="Coller"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="Aide">
<items>
<MenuItem mnemonicParsing="false" text="Ă propos"/>
</items>
</Menu>
</menus>
</MenuBar>
</top>
<left>
<VBox spacing="5.0">
<padding>
<Insets top="10.0" right="10.0" bottom="10.0" left="10.0"/>
</padding>
<children>
<Button text="Accueil"/>
<Button text="Profil"/>
<Button text="ParamĂštres"/>
</children>
</VBox>
</left>
<center>
<VBox spacing="10.0">
<padding>
<Insets top="20.0" right="20.0" bottom="20.0" left="20.0"/>
</padding>
<children>
<Label text="Zone de contenu principal"/>
<TextArea prefHeight="200.0" prefWidth="200.0" wrapText="true"/>
</children>
</VBox>
</center>
<bottom>
<HBox alignment="CENTER_LEFT">
<padding>
<Insets top="5.0" right="5.0" bottom="5.0" left="5.0"/>
</padding>
<children>
<Label text="PrĂȘt"/>
</children>
</HBox>
</bottom>
</BorderPane>
âą
<BorderPane> : Conteneur principal avec cinq zonesâą
<top> : Contient le MenuBar avec les menus Fichier, Ădition, Aideâą
<left> : Contient un VBox avec trois boutons de navigationâą
<center> : Contient un VBox avec le contenu principal (Label et TextArea)âą
<bottom> : Contient un HBox avec un Label pour la barre de statutâą
<right> : Non utilisĂ© dans cet exemple (peut ĂȘtre omis)
âïž PropriĂ©tĂ©s importantes du BorderPane
Voici les propriétés les plus utilisées pour configurer un BorderPane dans Scene Builder :
Propriétés de base (onglet Properties)
- Pref Width : Largeur préférée du conteneur
- Pref Height : Hauteur préférée du conteneur
Zones du BorderPane
Dans la vue hiérarchique, vous verrez les cinq zones :
- top : Zone en haut (barre de menu, barre d'outils)
- bottom : Zone en bas (barre de statut, informations)
- left : Zone à gauche (navigation, panneaux latéraux)
- right : Zone Ă droite (panneaux d'outils, informations)
- center : Zone centrale (contenu principal)
Comportement du redimensionnement
Le BorderPane gĂšre automatiquement le redimensionnement :
- Top et Bottom : S'étirent horizontalement, gardent leur hauteur
- Left et Right : S'étirent verticalement, gardent leur largeur
- Center : Prend tout l'espace disponible restant
Quand vous redimensionnez la fenĂȘtre, les zones Top et Bottom s'Ă©tirent horizontalement, les zones Left et Right s'Ă©tirent verticalement, et la zone Center prend automatiquement tout l'espace restant au centre.
đĄ Bonnes pratiques avec BorderPane
- Utilisez des conteneurs dans les zones : Si vous voulez plusieurs éléments dans une zone, utilisez un VBox ou HBox comme conteneur intermédiaire
- La zone Center est essentielle : C'est généralement la zone la plus importante, remplissez-la avec votre contenu principal
- Les zones sont optionnelles : Vous n'ĂȘtes pas obligĂ© de remplir toutes les zones, laissez celles que vous n'utilisez pas vides
- Pensez à la hiérarchie : Utilisez la vue hiérarchique pour voir clairement quelle zone contient quoi
- Combinez avec d'autres layouts : Chaque zone peut contenir n'importe quel autre layout (VBox, HBox, GridPane, etc.)
đ BorderPane vs autres layouts
Comparons le BorderPane avec d'autres layouts similaires :
- BorderPane vs VBox/HBox : BorderPane offre une structure en cinq zones, VBox/HBox sont linéaires
- BorderPane vs GridPane : BorderPane a des zones fixes, GridPane permet une grille flexible
- BorderPane vs AnchorPane : BorderPane organise automatiquement, AnchorPane permet un positionnement libre
3.1.4 â GridPane
Le GridPane est un conteneur qui organise ses éléments enfants dans une grille bidimensionnelle, avec des lignes et des colonnes. C'est le layout idéal pour créer des formulaires avec des labels et des champs alignés, des tableaux de données, ou toute interface nécessitant une organisation en grille.
đŻ Qu'est-ce qu'un GridPane ?
Le GridPane est un conteneur qui :
- Organise en grille : Place les éléments dans des cellules définies par des lignes et colonnes
- GÚre l'alignement : Permet d'aligner les éléments dans chaque cellule
- GÚre les espacements : Permet de définir des espacements entre les lignes (vgap) et colonnes (hgap)
- GÚre le redimensionnement : Les colonnes et lignes peuvent s'étirer pour remplir l'espace
đ Cas d'utilisation du GridPane
Le GridPane est particuliĂšrement utile pour :
- Formulaires structurés : Labels et champs alignés en colonnes
- Tableaux de données : Afficher des données en grille
- Interfaces de configuration : Organiser des options en grille
- Grilles de boutons : Créer des grilles de boutons (calculatrice, clavier virtuel)
- Tableaux de bord : Organiser des widgets en grille
Formulaire d'inscription avec les labels dans la premiÚre colonne et les champs de saisie dans la deuxiÚme colonne, tous alignés en grille.
đ ïž CrĂ©er un GridPane dans Scene Builder
Voici comment créer et configurer un GridPane dans Scene Builder :
Ătape 1 : Ajouter un GridPane
- Ouvrez Scene Builder
- Dans le panneau Library, trouvez la catégorie Containers
- Glissez-déposez un GridPane dans la zone de conception
- Le GridPane apparaĂźt avec une grille visible (lignes et colonnes)
Ătape 2 : Configurer les propriĂ©tĂ©s du GridPane
Sélectionnez le GridPane et configurez ses propriétés dans l'inspecteur :
- Hgap : Espacement horizontal entre les colonnes (en pixels, ex:
10) - Vgap : Espacement vertical entre les lignes (en pixels, ex:
10) - Padding : Marge intérieure autour du contenu (dans l'onglet Layout)
- Grid Lines Visible : Affiche les lignes de la grille (utile pour le design, désactivé en production)
Ătape 3 : Ajouter des Ă©lĂ©ments dans le GridPane
Pour ajouter des composants dans le GridPane :
- Glissez-déposez un composant dans le GridPane
- Le composant se place automatiquement dans une cellule
- Sélectionnez le composant et, dans l'onglet Layout, configurez :
- Column Index : Numéro de la colonne (commence à 0)
- Row Index : Numéro de la ligne (commence à 0)
- Column Span : Nombre de colonnes que l'élément occupe
- Row Span : Nombre de lignes que l'élément occupe
đ Exemple pratique : Formulaire avec GridPane
Créons un formulaire d'inscription avec des labels et des champs alignés :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un VBox comme racine
- Ajoutez un Label : "Formulaire d'inscription" (titre)
- Ajoutez un GridPane dans le VBox et configurez :
- Hgap =
15 - Vgap =
10 - Padding =
20
- Hgap =
- Dans le GridPane, ajoutez les éléments suivants :
- Ligne 0, Colonne 0 : Label "Nom :"
- Ligne 0, Colonne 1 : TextField (Pref Width =
200) - Ligne 1, Colonne 0 : Label "Prénom :"
- Ligne 1, Colonne 1 : TextField (Pref Width =
200) - Ligne 2, Colonne 0 : Label "Email :"
- Ligne 2, Colonne 1 : TextField (Pref Width =
200) - Ligne 3, Colonne 0 : Label "Téléphone :"
- Ligne 3, Colonne 1 : TextField (Pref Width =
200) - Ligne 4, Colonne 0, Column Span = 2 : HBox avec deux Button "Annuler" et "Valider"
Vous obtenez un formulaire bien structuré avec les labels dans la premiÚre colonne et les champs de saisie dans la deuxiÚme colonne, tous alignés verticalement. Les boutons en bas s'étendent sur deux colonnes.
Exemple
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.*?>
<VBox xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Label text="Formulaire d'inscription" style="-fx-font-size: 18px; -fx-font-weight: bold;"/>
<GridPane hgap="15.0" vgap="10.0">
<padding>
<Insets top="20.0" right="20.0" bottom="20.0" left="20.0"/>
</padding>
<children>
<Label text="Nom :" GridPane.columnIndex="0" GridPane.rowIndex="0"/>
<TextField prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="0"/>
<Label text="Prénom :" GridPane.columnIndex="0" GridPane.rowIndex="1"/>
<TextField prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1"/>
<Label text="Email :" GridPane.columnIndex="0" GridPane.rowIndex="2"/>
<TextField prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="2"/>
<Label text="Téléphone :" GridPane.columnIndex="0" GridPane.rowIndex="3"/>
<TextField prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="3"/>
<HBox spacing="10.0" alignment="CENTER" GridPane.columnIndex="0" GridPane.columnSpan="2" GridPane.rowIndex="4">
<children>
<Button text="Annuler"/>
<Button text="Valider"/>
</children>
</HBox>
</children>
</GridPane>
</children>
</VBox>
âą
<GridPane hgap="15.0" vgap="10.0"> : CrĂ©e un GridPane avec un espacement horizontal de 15px et vertical de 10pxâą
GridPane.columnIndex="0" : Place l'Ă©lĂ©ment dans la colonne 0 (premiĂšre colonne)âą
GridPane.rowIndex="0" : Place l'Ă©lĂ©ment dans la ligne 0 (premiĂšre ligne)âą
GridPane.columnSpan="2" : L'élément s'étend sur 2 colonnes (utilisé pour les boutons)⹠Les labels sont dans la colonne 0, les TextField dans la colonne 1
âą Chaque ligne correspond Ă un champ du formulaire
âïž PropriĂ©tĂ©s importantes du GridPane
Voici les propriétés les plus utilisées pour configurer un GridPane dans Scene Builder :
Propriétés du GridPane (onglet Properties)
- Hgap : Espacement horizontal entre les colonnes (en pixels)
- Vgap : Espacement vertical entre les lignes (en pixels)
- Grid Lines Visible : Affiche les lignes de la grille (utile pour le design)
Propriétés des enfants dans le GridPane (onglet Layout)
Quand vous sélectionnez un élément dans le GridPane, vous pouvez configurer :
- Column Index : Numéro de la colonne (0, 1, 2, ...)
- Row Index : Numéro de la ligne (0, 1, 2, ...)
- Column Span : Nombre de colonnes occupées (1 par défaut)
- Row Span : Nombre de lignes occupées (1 par défaut)
- Halignment : Alignement horizontal dans la cellule (LEFT, CENTER, RIGHT)
- Valignment : Alignement vertical dans la cellule (TOP, CENTER, BOTTOM)
- Hgrow : Permet à la colonne de s'étirer (NEVER, ALWAYS, SOMETIMES)
- Vgrow : Permet à la ligne de s'étirer (NEVER, ALWAYS, SOMETIMES)
- Margin : Marge autour de l'élément
⹠Column Span = 2 : L'élément occupe 2 colonnes
⹠Row Span = 3 : L'élément occupe 3 lignes
⹠Utile pour créer des éléments qui s'étendent sur plusieurs cellules (ex: un bouton qui prend toute la largeur)
đĄ Bonnes pratiques avec GridPane
- Utilisez des espacements cohérents : Choisissez des valeurs uniformes pour Hgap et Vgap (ex: 10px)
- Alignez les labels : Utilisez Halignment = RIGHT pour les labels dans la premiĂšre colonne pour un alignement professionnel
- Activez Grid Lines Visible pendant le design : Cela vous aide à voir la structure, désactivez-le pour la production
- Utilisez Column Span pour les boutons : Les boutons d'action en bas d'un formulaire peuvent s'étendre sur plusieurs colonnes
- Pensez au redimensionnement : Configurez Hgrow et Vgrow pour que les colonnes/lignes s'adaptent Ă la taille de la fenĂȘtre
- Organisez logiquement : Placez les Ă©lĂ©ments liĂ©s sur la mĂȘme ligne ou colonne
đ GridPane vs autres layouts
Comparons le GridPane avec d'autres layouts similaires :
- GridPane vs VBox/HBox : GridPane permet une organisation bidimensionnelle, VBox/HBox sont linéaires
- GridPane vs BorderPane : GridPane offre une grille flexible, BorderPane a des zones fixes
- GridPane vs FlowPane : GridPane a des cellules fixes, FlowPane organise automatiquement en flux
3.1.5 â AnchorPane
Le AnchorPane est un conteneur qui permet de positionner ses éléments enfants en utilisant des ancres (anchors) par rapport aux bords du conteneur. C'est le layout idéal pour créer des interfaces avec un positionnement précis, des éléments ancrés aux bords, ou des interfaces qui nécessitent un contrÎle total sur la position des éléments.
đŻ Qu'est-ce qu'un AnchorPane ?
Le AnchorPane est un conteneur qui :
- Permet le positionnement libre : Vous pouvez placer les Ă©lĂ©ments n'importe oĂč dans le conteneur
- Utilise des ancres : Permet d'ancrer les éléments aux bords (top, bottom, left, right)
- GÚre le redimensionnement : Les éléments peuvent rester ancrés aux bords lors du redimensionnement
- Offre un contrÎle précis : Permet un positionnement exact avec des coordonnées
đ Cas d'utilisation du AnchorPane
Le AnchorPane est particuliĂšrement utile pour :
- Interfaces avec positionnement précis : Quand vous avez besoin d'un contrÎle total sur la position
- ĂlĂ©ments ancrĂ©s aux bords : Boutons ou panneaux qui doivent rester aux bords
- Overlays et popups : ĂlĂ©ments superposĂ©s avec positionnement prĂ©cis
- Interfaces de jeu : ĂlĂ©ments de jeu avec positions fixes
- Designs complexes : Quand les autres layouts ne suffisent pas
Interface avec un titre ancré en haut, une zone de texte qui s'étire pour remplir l'espace disponible (ancrée aux quatre bords), et des boutons ancrés en bas.
đ ïž CrĂ©er un AnchorPane dans Scene Builder
Voici comment créer et configurer un AnchorPane dans Scene Builder :
Ătape 1 : Ajouter un AnchorPane
- Ouvrez Scene Builder
- Dans le panneau Library, trouvez la catégorie Containers
- Glissez-déposez un AnchorPane dans la zone de conception
- Le AnchorPane apparaßt comme un rectangle avec des bordures pointillées
Ătape 2 : Ajouter des Ă©lĂ©ments dans l'AnchorPane
Pour ajouter des composants dans l'AnchorPane :
- Glissez-déposez un composant dans l'AnchorPane
- Le composant peut ĂȘtre placĂ© n'importe oĂč en le glissant
- Sélectionnez le composant et, dans l'onglet Layout, configurez les ancres
Ătape 3 : Configurer les ancres
Pour chaque élément dans l'AnchorPane, vous pouvez configurer des ancres :
- Top Anchor : Distance depuis le haut du conteneur (en pixels)
- Bottom Anchor : Distance depuis le bas du conteneur (en pixels)
- Left Anchor : Distance depuis la gauche du conteneur (en pixels)
- Right Anchor : Distance depuis la droite du conteneur (en pixels)
⹠Si vous définissez Top Anchor = 10, l'élément sera à 10 pixels du haut
⹠Si vous définissez Left Anchor = 20 et Right Anchor = 20, l'élément s'étirera horizontalement en gardant 20 pixels de chaque cÎté
âą Les ancres permettent aux Ă©lĂ©ments de rester positionnĂ©s mĂȘme lors du redimensionnement
đ Exemple pratique : Interface avec AnchorPane
Créons une interface avec des éléments ancrés aux différents bords :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un AnchorPane comme racine
- Configurez le AnchorPane :
- Pref Width =
600 - Pref Height =
400
- Pref Width =
- Ajoutez les éléments suivants :
- Label "Titre" :
- Top Anchor =
20 - Left Anchor =
20 - Right Anchor =
20
- Top Anchor =
- TextArea (zone de contenu) :
- Top Anchor =
60 - Left Anchor =
20 - Right Anchor =
20 - Bottom Anchor =
60
- Top Anchor =
- HBox avec deux Button (en bas) :
- Bottom Anchor =
20 - Left Anchor =
20 - Right Anchor =
20 - Contient deux Button : "Annuler" et "Valider"
- Bottom Anchor =
- Label "Titre" :
Vous obtenez une interface avec un titre ancrĂ© en haut, une zone de texte qui s'Ă©tire pour remplir l'espace disponible (ancrĂ©e aux quatre bords), et des boutons ancrĂ©s en bas. Quand vous redimensionnez la fenĂȘtre, tous les Ă©lĂ©ments restent correctement positionnĂ©s grĂące aux ancres.
Exemple
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.*?>
<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Label text="Titre" style="-fx-font-size: 18px; -fx-font-weight: bold;"
AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="20.0"/>
<TextArea wrapText="true"
AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0"
AnchorPane.topAnchor="60.0" AnchorPane.bottomAnchor="60.0"/>
<HBox spacing="10.0" alignment="CENTER"
AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.bottomAnchor="20.0">
<children>
<Button text="Annuler"/>
<Button text="Valider"/>
</children>
</HBox>
</children>
</AnchorPane>
âą
<AnchorPane prefHeight="400.0" prefWidth="600.0"> : CrĂ©e un AnchorPane de 600x400 pixelsâą
AnchorPane.topAnchor="20.0" : L'Ă©lĂ©ment est Ă 20 pixels du hautâą
AnchorPane.leftAnchor="20.0" : L'Ă©lĂ©ment est Ă 20 pixels de la gaucheâą
AnchorPane.rightAnchor="20.0" : L'Ă©lĂ©ment est Ă 20 pixels de la droiteâą
AnchorPane.bottomAnchor="60.0" : L'élément est à 60 pixels du bas⹠Le TextArea utilise les quatre ancres (top, bottom, left, right) pour s'étirer et remplir l'espace disponible
⹠Les boutons sont ancrés en bas avec des ancres left et right pour s'étirer horizontalement
âïž PropriĂ©tĂ©s importantes de l'AnchorPane
Voici les propriétés les plus utilisées pour configurer un AnchorPane dans Scene Builder :
Propriétés de base (onglet Properties)
- Pref Width : Largeur préférée du conteneur
- Pref Height : Hauteur préférée du conteneur
Propriétés des enfants dans l'AnchorPane (onglet Layout)
Quand vous sélectionnez un élément dans l'AnchorPane, vous pouvez configurer :
- Top Anchor : Distance depuis le haut (en pixels)
- Bottom Anchor : Distance depuis le bas (en pixels)
- Left Anchor : Distance depuis la gauche (en pixels)
- Right Anchor : Distance depuis la droite (en pixels)
- Layout X : Position X absolue (alternative aux ancres)
- Layout Y : Position Y absolue (alternative aux ancres)
âą Ancres : L'Ă©lĂ©ment reste Ă une distance fixe des bords, mĂȘme lors du redimensionnement
⹠Layout X/Y : Position fixe absolue, l'élément ne bouge pas lors du redimensionnement
⹠Utilisez les ancres pour des éléments qui doivent s'adapter au redimensionnement
⹠Utilisez Layout X/Y pour des éléments avec position fixe
đĄ Bonnes pratiques avec AnchorPane
- Utilisez les ancres pour l'adaptabilité : Les ancres permettent aux éléments de s'adapter au redimensionnement
- Combinez Top/Bottom ou Left/Right : Pour qu'un élément s'étire, définissez les ancres opposées (ex: Top = 10 et Bottom = 10)
- Ăvitez le positionnement absolu si possible : PrĂ©fĂ©rez les ancres pour une meilleure adaptabilitĂ©
- Utilisez pour des cas spĂ©cifiques : AnchorPane est puissant mais peut ĂȘtre complexe, utilisez-le quand les autres layouts ne suffisent pas
- Pensez au redimensionnement : Testez toujours votre interface avec diffĂ©rentes tailles de fenĂȘtre
đ AnchorPane vs autres layouts
Comparons l'AnchorPane avec d'autres layouts similaires :
- AnchorPane vs VBox/HBox : AnchorPane permet un positionnement libre, VBox/HBox organisent automatiquement
- AnchorPane vs GridPane : AnchorPane offre un positionnement libre, GridPane organise en grille
- AnchorPane vs Pane : AnchorPane ajoute les ancres, Pane est un positionnement absolu pur