3.2Les autres Layouts utiles
3.2.1 â FlowPane
Le FlowPane est un conteneur qui organise ses Ă©lĂ©ments enfants en flux, c'est-Ă -dire qu'il les place les uns aprĂšs les autres et passe automatiquement Ă la ligne suivante (ou colonne suivante) quand l'espace disponible est insuffisant. C'est le layout idĂ©al pour crĂ©er des galeries d'images, des listes de tags, ou des Ă©lĂ©ments qui doivent s'adapter automatiquement Ă la taille de la fenĂȘtre.
đŻ Qu'est-ce qu'un FlowPane ?
Le FlowPane est un conteneur qui :
- Organise en flux : Place les éléments les uns aprÚs les autres, horizontalement ou verticalement
- Passe à la ligne automatiquement : Quand l'espace est insuffisant, les éléments passent à la ligne suivante
- GÚre l'espacement : Permet de définir un espacement uniforme entre les éléments
- S'adapte au redimensionnement : Les Ă©lĂ©ments se rĂ©organisent automatiquement quand la fenĂȘtre change de taille
đ Cas d'utilisation du FlowPane
Le FlowPane est particuliĂšrement utile pour :
- Galeries d'images : Afficher des images qui s'adaptent Ă la largeur disponible
- Listes de tags : Afficher des tags ou badges qui s'organisent automatiquement
- Boutons dynamiques : Créer des barres d'outils qui s'adaptent à la taille
- ĂlĂ©ments de taille variable : Quand les Ă©lĂ©ments ont des tailles diffĂ©rentes
- Interfaces responsives : Créer des interfaces qui s'adaptent à différentes tailles d'écran
đ ïž CrĂ©er un FlowPane dans Scene Builder
Voici comment créer et configurer un FlowPane dans Scene Builder :
Ătape 1 : Ajouter un FlowPane
- Ouvrez Scene Builder
- Dans le panneau Library, trouvez la catégorie Containers
- Glissez-déposez un FlowPane dans la zone de conception
- Le FlowPane apparaßt comme un rectangle avec des bordures pointillées
Ătape 2 : Configurer les propriĂ©tĂ©s du FlowPane
Sélectionnez le FlowPane et configurez ses propriétés dans l'inspecteur :
- Orientation : HORIZONTAL (éléments de gauche à droite) ou VERTICAL (éléments de haut en bas)
- Hgap : Espacement horizontal entre les éléments (en pixels)
- Vgap : Espacement vertical entre les lignes/colonnes (en pixels)
- Alignment : Alignement des éléments dans le conteneur
- Column Halignment : Alignement horizontal des colonnes (pour orientation VERTICAL)
- Row Valignment : Alignement vertical des lignes (pour orientation HORIZONTAL)
Ătape 3 : Ajouter des Ă©lĂ©ments dans le FlowPane
Pour ajouter des composants dans le FlowPane :
- Glissez-déposez des composants (Button, Label, ImageView, etc.) depuis la Library dans le FlowPane
- Les composants s'organisent automatiquement en flux
- Quand vous redimensionnez le FlowPane, les éléments se réorganisent automatiquement
đ Exemple pratique : Galerie d'images avec FlowPane
Créons une galerie d'images simple qui s'adapte à la largeur disponible :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un VBox comme racine
- Ajoutez un Label : "Galerie d'images" (titre)
- Ajoutez un FlowPane dans le VBox et configurez :
- Orientation =
HORIZONTAL - Hgap =
10 - Vgap =
10 - Padding =
10
- Orientation =
- Dans le FlowPane, ajoutez plusieurs ImageView ou Button :
- Chaque élément représente une image de la galerie
- Les éléments s'organisent automatiquement en lignes
- Quand vous redimensionnez, les éléments passent à la ligne suivante si nécessaire
Vous obtenez une galerie d'images oĂč les Ă©lĂ©ments s'organisent horizontalement. Quand la largeur disponible est insuffisante, les Ă©lĂ©ments passent automatiquement Ă la ligne suivante, crĂ©ant un effet de "flux" adaptatif.
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="Galerie d'images" style="-fx-font-size: 18px; -fx-font-weight: bold;"/>
<FlowPane hgap="10.0" vgap="10.0" orientation="HORIZONTAL">
<padding>
<Insets top="10.0" right="10.0" bottom="10.0" left="10.0"/>
</padding>
<children>
<Button text="Image 1" prefWidth="100.0" prefHeight="100.0"/>
<Button text="Image 2" prefWidth="100.0" prefHeight="100.0"/>
<Button text="Image 3" prefWidth="100.0" prefHeight="100.0"/>
<Button text="Image 4" prefWidth="100.0" prefHeight="100.0"/>
<Button text="Image 5" prefWidth="100.0" prefHeight="100.0"/>
<Button text="Image 6" prefWidth="100.0" prefHeight="100.0"/>
</children>
</FlowPane>
</children>
</VBox>
âą
<FlowPane hgap="10.0" vgap="10.0" orientation="HORIZONTAL"> : Crée un FlowPane avec espacement de 10px et orientation horizontale⹠Les boutons sont placés les uns aprÚs les autres horizontalement
âą Quand la largeur est insuffisante, les boutons passent automatiquement Ă la ligne suivante
âą L'espacement est uniforme grĂące Ă hgap et vgap
âïž PropriĂ©tĂ©s importantes du FlowPane
Voici les propriétés les plus utilisées pour configurer un FlowPane dans Scene Builder :
Propriétés de base (onglet Properties)
- Orientation : HORIZONTAL (flux horizontal) ou VERTICAL (flux vertical)
- Hgap : Espacement horizontal entre les éléments (en pixels)
- Vgap : Espacement vertical entre les lignes/colonnes (en pixels)
Propriétés de layout (onglet Layout)
- Alignment : Alignement général des éléments dans le conteneur
- Column Halignment : Alignement horizontal des colonnes (pour orientation VERTICAL)
- Row Valignment : Alignement vertical des lignes (pour orientation HORIZONTAL)
- Padding : Marge intérieure autour du contenu
đĄ Bonnes pratiques avec FlowPane
- Utilisez pour des éléments de taille variable : FlowPane est parfait quand les éléments ont des tailles différentes
- Pensez à l'espacement : Utilisez des valeurs cohérentes pour hgap et vgap
- Orientation horizontale par défaut : HORIZONTAL est le plus courant pour les galeries et listes
- Testez le redimensionnement : Vérifiez que les éléments se réorganisent correctement quand vous redimensionnez
- Combinez avec ScrollPane : Pour des listes longues, enveloppez le FlowPane dans un ScrollPane
đ FlowPane vs autres layouts
Comparons le FlowPane avec d'autres layouts similaires :
- FlowPane vs HBox : FlowPane passe Ă la ligne, HBox garde tout sur une ligne
- FlowPane vs VBox : FlowPane passe Ă la colonne, VBox garde tout en une colonne
- FlowPane vs TilePane : FlowPane adapte la taille, TilePane utilise des tuiles de taille fixe
3.2.2 â TilePane
Le TilePane est un conteneur qui organise ses Ă©lĂ©ments enfants en tuiles (tiles) de taille uniforme. Contrairement au FlowPane qui adapte la taille des Ă©lĂ©ments, le TilePane crĂ©e une grille rĂ©guliĂšre oĂč chaque Ă©lĂ©ment occupe la mĂȘme taille. C'est le layout idĂ©al pour crĂ©er des grilles de boutons, des tableaux de bord avec widgets uniformes, ou des galeries avec des images de mĂȘme taille.
đŻ Qu'est-ce qu'un TilePane ?
Le TilePane est un conteneur qui :
- Organise en tuiles : Place les éléments dans une grille de tuiles de taille uniforme
- Taille fixe des tuiles : Tous les Ă©lĂ©ments occupent la mĂȘme taille (largeur et hauteur)
- GÚre l'espacement : Permet de définir un espacement uniforme entre les tuiles
- Passe à la ligne automatiquement : Crée de nouvelles lignes/colonnes quand nécessaire
đ Cas d'utilisation du TilePane
Le TilePane est particuliĂšrement utile pour :
- Grilles de boutons : Créer des grilles de boutons uniformes (calculatrice, clavier virtuel)
- Tableaux de bord : Afficher des widgets de mĂȘme taille en grille
- Galeries uniformes : Afficher des images ou cartes de mĂȘme taille
- Interfaces de sélection : Créer des grilles de sélection avec éléments uniformes
- Organisation réguliÚre : Quand vous voulez une apparence trÚs structurée et uniforme
đ ïž CrĂ©er un TilePane dans Scene Builder
Voici comment créer et configurer un TilePane dans Scene Builder :
Ătape 1 : Ajouter un TilePane
- Ouvrez Scene Builder
- Dans le panneau Library, trouvez la catégorie Containers
- Glissez-déposez un TilePane dans la zone de conception
- Le TilePane apparaßt comme un rectangle avec des bordures pointillées
Ătape 2 : Configurer les propriĂ©tĂ©s du TilePane
Sélectionnez le TilePane et configurez ses propriétés dans l'inspecteur :
- Orientation : HORIZONTAL (tuiles de gauche Ă droite) ou VERTICAL (tuiles de haut en bas)
- Pref Tile Width : Largeur préférée de chaque tuile (en pixels)
- Pref Tile Height : Hauteur préférée de chaque tuile (en pixels)
- Hgap : Espacement horizontal entre les tuiles (en pixels)
- Vgap : Espacement vertical entre les tuiles (en pixels)
- Tile Alignment : Alignement des éléments dans chaque tuile
Ătape 3 : Ajouter des Ă©lĂ©ments dans le TilePane
Pour ajouter des composants dans le TilePane :
- Glissez-déposez des composants (Button, Label, etc.) depuis la Library dans le TilePane
- Chaque élément occupe automatiquement la taille définie (Pref Tile Width à Pref Tile Height)
- Les éléments s'organisent en grille réguliÚre
đ Exemple pratique : Grille de boutons avec TilePane
Créons une grille de boutons uniforme (comme une calculatrice) :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un VBox comme racine
- Ajoutez un TextField en haut (pour l'affichage de la calculatrice)
- Ajoutez un TilePane dans le VBox et configurez :
- Orientation =
HORIZONTAL - Pref Tile Width =
60 - Pref Tile Height =
60 - Hgap =
5 - Vgap =
5 - Padding =
10
- Orientation =
- Dans le TilePane, ajoutez plusieurs Button :
- Chaque bouton occupe exactement 60Ă60 pixels
- Les boutons s'organisent en grille réguliÚre
- Exemple : boutons "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "+", "-", etc.
Vous obtenez une grille de boutons parfaitement alignĂ©e oĂč chaque bouton a exactement la mĂȘme taille. Les boutons s'organisent en lignes et colonnes rĂ©guliĂšres, crĂ©ant une apparence trĂšs structurĂ©e.
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="10.0" right="10.0" bottom="10.0" left="10.0"/>
</padding>
<children>
<TextField promptText="0" prefWidth="250.0"/>
<TilePane hgap="5.0" vgap="5.0" prefTileWidth="60.0" prefTileHeight="60.0" orientation="HORIZONTAL">
<padding>
<Insets top="10.0" right="10.0" bottom="10.0" left="10.0"/>
</padding>
<children>
<Button text="1" prefWidth="60.0" prefHeight="60.0"/>
<Button text="2" prefWidth="60.0" prefHeight="60.0"/>
<Button text="3" prefWidth="60.0" prefHeight="60.0"/>
<Button text="4" prefWidth="60.0" prefHeight="60.0"/>
<Button text="5" prefWidth="60.0" prefHeight="60.0"/>
<Button text="6" prefWidth="60.0" prefHeight="60.0"/>
<Button text="7" prefWidth="60.0" prefHeight="60.0"/>
<Button text="8" prefWidth="60.0" prefHeight="60.0"/>
<Button text="9" prefWidth="60.0" prefHeight="60.0"/>
<Button text="0" prefWidth="60.0" prefHeight="60.0"/>
<Button text="+" prefWidth="60.0" prefHeight="60.0"/>
<Button text="-" prefWidth="60.0" prefHeight="60.0"/>
</children>
</TilePane>
</children>
</VBox>
âą
prefTileWidth="60.0" prefTileHeight="60.0" : DĂ©finit la taille uniforme de chaque tuile (60Ă60 pixels)âą Tous les boutons occupent exactement la mĂȘme taille, crĂ©ant une grille rĂ©guliĂšre
âą Les boutons s'organisent en lignes horizontales avec un espacement de 5 pixels
âą Quand il n'y a plus de place sur une ligne, les boutons passent Ă la ligne suivante
âïž PropriĂ©tĂ©s importantes du TilePane
Voici les propriétés les plus utilisées pour configurer un TilePane dans Scene Builder :
Propriétés de base (onglet Properties)
- Orientation : HORIZONTAL (tuiles de gauche Ă droite) ou VERTICAL (tuiles de haut en bas)
- Pref Tile Width : Largeur de chaque tuile (en pixels)
- Pref Tile Height : Hauteur de chaque tuile (en pixels)
- Hgap : Espacement horizontal entre les tuiles (en pixels)
- Vgap : Espacement vertical entre les tuiles (en pixels)
Propriétés de layout (onglet Layout)
- Tile Alignment : Alignement des éléments dans chaque tuile (TOP_LEFT, CENTER, etc.)
- Alignment : Alignement général du TilePane dans son conteneur parent
- Padding : Marge intérieure autour du contenu
đĄ Bonnes pratiques avec TilePane
- Utilisez pour des Ă©lĂ©ments uniformes : TilePane est parfait quand tous les Ă©lĂ©ments doivent avoir la mĂȘme taille
- Définissez la taille des tuiles : Pensez à la taille optimale pour vos éléments
- Pensez à l'espacement : Utilisez des valeurs cohérentes pour hgap et vgap
- Testez avec différents nombres d'éléments : Vérifiez que la grille reste cohérente
- Combinez avec ScrollPane : Pour des grilles longues, enveloppez le TilePane dans un ScrollPane
đ TilePane vs autres layouts
Comparons le TilePane avec d'autres layouts similaires :
- TilePane vs FlowPane : TilePane utilise des tuiles de taille fixe, FlowPane adapte la taille
- TilePane vs GridPane : TilePane organise automatiquement, GridPane nécessite des indices de ligne/colonne
- TilePane vs HBox/VBox : TilePane crée une grille, HBox/VBox sont linéaires
3.2.3 â StackPane
Le StackPane est un conteneur qui superpose ses Ă©lĂ©ments enfants les uns par-dessus les autres, comme une pile de cartes. Tous les Ă©lĂ©ments sont positionnĂ©s au mĂȘme endroit, et seul l'Ă©lĂ©ment du dessus est visible. C'est le layout idĂ©al pour crĂ©er des overlays, des Ă©lĂ©ments superposĂ©s, des indicateurs de statut, ou des interfaces avec des couches.
đŻ Qu'est-ce qu'un StackPane ?
Le StackPane est un conteneur qui :
- Superpose les Ă©lĂ©ments : Place tous les Ă©lĂ©ments enfants au mĂȘme endroit, les uns par-dessus les autres
- Ordre de superposition : Le dernier élément ajouté est au-dessus (visible)
- GÚre l'alignement : Permet d'aligner les éléments superposés
- Utile pour les overlays : Parfait pour créer des éléments qui se superposent à d'autres
đ Cas d'utilisation du StackPane
Le StackPane est particuliĂšrement utile pour :
- Overlays et popups : Superposer des éléments par-dessus d'autres
- Indicateurs de statut : Afficher des badges ou icÎnes sur des éléments
- ĂlĂ©ments de fond : CrĂ©er des arriĂšre-plans avec des Ă©lĂ©ments par-dessus
- Interfaces en couches : Organiser des éléments en plusieurs couches visuelles
- ĂlĂ©ments centrĂ©s : Centrer facilement un Ă©lĂ©ment sur un autre
đ ïž CrĂ©er un StackPane dans Scene Builder
Voici comment créer et configurer un StackPane dans Scene Builder :
Ătape 1 : Ajouter un StackPane
- Ouvrez Scene Builder
- Dans le panneau Library, trouvez la catégorie Containers
- Glissez-déposez un StackPane dans la zone de conception
- Le StackPane apparaßt comme un rectangle avec des bordures pointillées
Ătape 2 : Configurer les propriĂ©tĂ©s du StackPane
Sélectionnez le StackPane et configurez ses propriétés dans l'inspecteur :
- Alignment : Alignement des éléments superposés (CENTER, TOP_LEFT, etc.)
- Pref Width / Pref Height : Taille préférée du conteneur
Ătape 3 : Ajouter des Ă©lĂ©ments dans le StackPane
Pour ajouter des composants dans le StackPane :
- Glissez-déposez des composants depuis la Library dans le StackPane
- Les éléments se superposent automatiquement
- Le dernier élément ajouté est visible au-dessus
- Vous pouvez réorganiser l'ordre dans la vue hiérarchique
đ Exemple pratique : Image avec badge avec StackPane
Créons une image avec un badge de statut superposé :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un VBox comme racine
- Ajoutez un StackPane dans le VBox et configurez :
- Pref Width =
200 - Pref Height =
200 - Alignment =
CENTER
- Pref Width =
- Dans le StackPane, ajoutez les éléments suivants (dans l'ordre) :
- Un Rectangle ou ImageView (fond/image principale)
- Un Label avec texte "Nouveau" et style avec fond coloré (badge)
- Positionnez le Label en haut Ă droite en utilisant l'alignement ou les marges
Vous obtenez une image avec un badge "Nouveau" superposé en haut à droite. Le badge est visible par-dessus l'image grùce à la superposition du StackPane.
Exemple
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.shape.*?>
<?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>
<StackPane prefWidth="200.0" prefHeight="200.0" alignment="CENTER">
<children>
<Rectangle width="200.0" height="200.0" fill="#e0e0e0" arcWidth="10.0" arcHeight="10.0"/>
<Label text="Nouveau" style="-fx-background-color: red; -fx-text-fill: white; -fx-padding: 5px;"
StackPane.alignment="TOP_RIGHT">
<StackPane.margin>
<Insets top="10.0" right="10.0"/>
</StackPane.margin>
</Label>
</children>
</StackPane>
</children>
</VBox>
âą
<StackPane> : Conteneur qui superpose les Ă©lĂ©mentsâą
<Rectangle> : ĂlĂ©ment de fond (image ou forme)âą
<Label> : Badge superposĂ© avec StackPane.alignment="TOP_RIGHT" pour le positionnerâą
<StackPane.margin> : Marge pour espacer le badge du bord⹠Les éléments sont superposés, le Label étant visible par-dessus le Rectangle
âïž PropriĂ©tĂ©s importantes du StackPane
Voici les propriétés les plus utilisées pour configurer un StackPane 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 de layout (onglet Layout)
- Alignment : Alignement des éléments superposés (TOP_LEFT, TOP_CENTER, TOP_RIGHT, CENTER_LEFT, CENTER, CENTER_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT)
Propriétés des enfants dans le StackPane (onglet Layout)
Quand vous sélectionnez un élément enfant du StackPane, vous pouvez configurer :
- Alignment : Alignement spécifique de cet élément dans le StackPane
- Margin : Marge autour de l'élément
đĄ Bonnes pratiques avec StackPane
- Utilisez pour la superposition : StackPane est parfait quand vous voulez superposer des éléments
- Pensez à l'ordre : L'ordre dans la hiérarchie détermine quel élément est au-dessus
- Utilisez l'alignement : Alignez les éléments superposés selon vos besoins
- Combinez avec d'autres layouts : StackPane peut contenir d'autres layouts pour des structures complexes
- Attention à la visibilité : Seul l'élément du dessus est visible, assurez-vous que c'est celui que vous voulez
đ StackPane vs autres layouts
Comparons le StackPane avec d'autres layouts similaires :
- StackPane vs Pane : StackPane superpose automatiquement, Pane permet un positionnement libre
- StackPane vs Group : StackPane gĂšre l'alignement, Group est un simple conteneur
- StackPane vs VBox/HBox : StackPane superpose, VBox/HBox organisent linéairement
3.2.4 â Pane (layout libre)
Le Pane est un conteneur qui permet un positionnement absolu et libre de ses Ă©lĂ©ments enfants. Contrairement aux autres layouts qui organisent automatiquement les Ă©lĂ©ments, le Pane vous donne un contrĂŽle total sur la position de chaque Ă©lĂ©ment en utilisant des coordonnĂ©es X et Y. C'est le layout idĂ©al pour crĂ©er des interfaces avec positionnement prĂ©cis, des dessins, ou des Ă©lĂ©ments qui doivent ĂȘtre placĂ©s Ă des positions exactes.
đŻ Qu'est-ce qu'un Pane ?
Le Pane est un conteneur qui :
- Permet le positionnement libre : Vous placez chaque élément à une position exacte (X, Y)
- N'organise pas automatiquement : Les Ă©lĂ©ments restent oĂč vous les placez
- Utilise LayoutX et LayoutY : Coordonnées absolues pour positionner les éléments
- Offre un contrÎle total : Parfait pour des interfaces avec positionnement précis
đ Cas d'utilisation du Pane
Le Pane est particuliĂšrement utile pour :
- Interfaces avec positionnement précis : Quand vous avez besoin d'un contrÎle total sur la position
- Dessins et graphiques : Créer des formes et éléments positionnés précisément
- Interfaces de jeu : Positionner des éléments de jeu à des coordonnées exactes
- Diagrammes : Créer des diagrammes avec éléments positionnés
- Interfaces personnalisées : Quand les autres layouts ne suffisent pas
đ ïž CrĂ©er un Pane dans Scene Builder
Voici comment créer et configurer un Pane dans Scene Builder :
Ătape 1 : Ajouter un Pane
- Ouvrez Scene Builder
- Dans le panneau Library, trouvez la catégorie Containers
- Glissez-déposez un Pane dans la zone de conception
- Le Pane apparaßt comme un rectangle avec des bordures pointillées
Ătape 2 : Configurer les propriĂ©tĂ©s du Pane
Sélectionnez le Pane et configurez ses propriétés dans l'inspecteur :
- Pref Width : Largeur préférée du conteneur
- Pref Height : Hauteur préférée du conteneur
Ătape 3 : Ajouter et positionner des Ă©lĂ©ments dans le Pane
Pour ajouter et positionner des composants dans le Pane :
- Glissez-déposez des composants depuis la Library dans le Pane
- Sélectionnez chaque élément et, dans l'onglet Layout, configurez :
- Layout X : Position X (distance depuis la gauche, en pixels)
- Layout Y : Position Y (distance depuis le haut, en pixels)
- Vous pouvez aussi glisser les éléments directement dans la zone de conception pour les positionner visuellement
đ Exemple pratique : Interface avec positionnement libre
Créons une interface simple avec des éléments positionnés précisément :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un Pane comme racine
- Configurez le Pane :
- Pref Width =
400 - Pref Height =
300
- Pref Width =
- Dans le Pane, ajoutez les éléments suivants avec leurs positions :
- Label "Titre" : Layout X =
50, Layout Y =20 - Button "Bouton 1" : Layout X =
50, Layout Y =100 - Button "Bouton 2" : Layout X =
200, Layout Y =100 - TextField : Layout X =
50, Layout Y =150, Pref Width =300
- Label "Titre" : Layout X =
Vous obtenez une interface oĂč chaque Ă©lĂ©ment est positionnĂ© exactement oĂč vous l'avez placĂ©. Les Ă©lĂ©ments ne se rĂ©organisent pas automatiquement - ils restent Ă leurs positions fixes.
Exemple
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<Pane prefHeight="300.0" prefWidth="400.0" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Label layoutX="50.0" layoutY="20.0" text="Titre" style="-fx-font-size: 18px; -fx-font-weight: bold;"/>
<Button layoutX="50.0" layoutY="100.0" text="Bouton 1"/>
<Button layoutX="200.0" layoutY="100.0" text="Bouton 2"/>
<TextField layoutX="50.0" layoutY="150.0" prefWidth="300.0" promptText="Entrez du texte"/>
</children>
</Pane>
âą
<Pane> : Conteneur avec positionnement libreâą
layoutX="50.0" : Position X de l'Ă©lĂ©ment (50 pixels depuis la gauche)âą
layoutY="20.0" : Position Y de l'élément (20 pixels depuis le haut)⹠Chaque élément a des coordonnées absolues et reste à sa position exacte
⹠Les éléments ne se réorganisent pas lors du redimensionnement
âïž PropriĂ©tĂ©s importantes du Pane
Voici les propriétés les plus utilisées pour configurer un Pane 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 le Pane (onglet Layout)
Quand vous sélectionnez un élément dans le Pane, vous pouvez configurer :
- Layout X : Position X absolue (distance depuis la gauche, en pixels)
- Layout Y : Position Y absolue (distance depuis le haut, en pixels)
đĄ Bonnes pratiques avec Pane
- Utilisez pour le positionnement précis : Pane est parfait quand vous avez besoin de positions exactes
- Ăvitez si possible : Les autres layouts sont gĂ©nĂ©ralement plus maintenables
- Pensez au redimensionnement : Les éléments ne s'adaptent pas automatiquement, testez avec différentes tailles
- Utilisez pour des cas spĂ©cifiques : Dessins, jeux, diagrammes oĂč le positionnement prĂ©cis est nĂ©cessaire
- Combinez avec d'autres layouts : Utilisez Pane pour des parties spécifiques, pas pour toute l'interface
đ Pane vs autres layouts
Comparons le Pane avec d'autres layouts similaires :
- Pane vs AnchorPane : Pane utilise des coordonnées absolues, AnchorPane utilise des ancres qui s'adaptent
- Pane vs GridPane : Pane permet un positionnement libre, GridPane organise en grille
- Pane vs VBox/HBox : Pane est libre, VBox/HBox organisent automatiquement
3.2.5 â ScrollPane
Le ScrollPane est un conteneur qui ajoute des barres de défilement (scrollbars) à son contenu. Quand le contenu est plus grand que l'espace disponible, le ScrollPane permet de faire défiler pour voir le reste du contenu. C'est le layout idéal pour afficher du contenu long, des listes, des images grandes, ou tout élément qui peut dépasser de l'espace disponible.
đŻ Qu'est-ce qu'un ScrollPane ?
Le ScrollPane est un conteneur qui :
- Ajoute le défilement : Permet de faire défiler le contenu avec des barres de défilement
- GĂšre le viewport : Affiche seulement la partie visible du contenu
- Barres de défilement automatiques : Les barres apparaissent automatiquement quand nécessaire
- Peut contenir n'importe quel Node : Accepte un seul élément enfant (souvent un layout)
đ Cas d'utilisation du ScrollPane
Le ScrollPane est particuliĂšrement utile pour :
- Contenu long : Afficher du texte, des listes ou des images qui dépassent
- Listes défilables : Créer des listes avec beaucoup d'éléments
- Images grandes : Afficher des images plus grandes que l'espace disponible
- Formulaires longs : Créer des formulaires avec beaucoup de champs
- Zones de texte : Ajouter le défilement à des TextArea ou autres composants
đ ïž CrĂ©er un ScrollPane dans Scene Builder
Voici comment créer et configurer un ScrollPane dans Scene Builder :
Ătape 1 : Ajouter un ScrollPane
- Ouvrez Scene Builder
- Dans le panneau Library, trouvez la catégorie Containers
- Glissez-déposez un ScrollPane dans la zone de conception
- Le ScrollPane apparaĂźt comme un rectangle avec des bordures
Ătape 2 : Configurer les propriĂ©tĂ©s du ScrollPane
Sélectionnez le ScrollPane et configurez ses propriétés dans l'inspecteur :
- Pref Viewport Width : Largeur de la zone visible (viewport)
- Pref Viewport Height : Hauteur de la zone visible (viewport)
- Hbar Policy : Politique de la barre de défilement horizontale (AS_NEEDED, ALWAYS, NEVER)
- Vbar Policy : Politique de la barre de défilement verticale (AS_NEEDED, ALWAYS, NEVER)
- Fit To Width : Ajuster le contenu Ă la largeur (pour les images)
- Fit To Height : Ajuster le contenu Ă la hauteur (pour les images)
Ătape 3 : Ajouter du contenu dans le ScrollPane
Pour ajouter du contenu dans le ScrollPane :
- Le ScrollPane ne peut contenir qu'un seul élément enfant
- Glissez-déposez un layout (VBox, HBox, GridPane, etc.) ou un composant dans le ScrollPane
- Ajoutez votre contenu dans ce layout
- Si le contenu dépasse, les barres de défilement apparaissent automatiquement
đ Exemple pratique : Liste dĂ©filable avec ScrollPane
Créons une liste d'éléments défilable :
Dans Scene Builder :
- Créez un nouveau fichier FXML avec un VBox comme racine
- Ajoutez un Label : "Liste d'éléments" (titre)
- Ajoutez un ScrollPane dans le VBox et configurez :
- Pref Viewport Width =
300 - Pref Viewport Height =
200 - Vbar Policy =
AS_NEEDED - Hbar Policy =
NEVER
- Pref Viewport Width =
- Dans le ScrollPane, ajoutez un VBox et configurez :
- Spacing =
5 - Padding =
10
- Spacing =
- Dans ce VBox, ajoutez plusieurs Label ou Button :
- Ajoutez suffisamment d'éléments pour que la liste dépasse la hauteur du ScrollPane
- Exemple : "ĂlĂ©ment 1", "ĂlĂ©ment 2", "ĂlĂ©ment 3", etc.
Vous obtenez une liste défilable. Quand le contenu dépasse la hauteur du ScrollPane, une barre de défilement verticale apparaßt automatiquement, permettant de faire défiler pour voir tous les éléments.
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="Liste d'éléments" style="-fx-font-size: 18px; -fx-font-weight: bold;"/>
<ScrollPane prefViewportWidth="300.0" prefViewportHeight="200.0"
vbarPolicy="AS_NEEDED" hbarPolicy="NEVER">
<content>
<VBox spacing="5.0">
<padding>
<Insets top="10.0" right="10.0" bottom="10.0" left="10.0"/>
</padding>
<children>
<Label text="ĂlĂ©ment 1"/>
<Label text="ĂlĂ©ment 2"/>
<Label text="ĂlĂ©ment 3"/>
<Label text="ĂlĂ©ment 4"/>
<Label text="ĂlĂ©ment 5"/>
<Label text="ĂlĂ©ment 6"/>
<Label text="ĂlĂ©ment 7"/>
<Label text="ĂlĂ©ment 8"/>
<Label text="ĂlĂ©ment 9"/>
<Label text="ĂlĂ©ment 10"/>
</children>
</VBox>
</content>
</ScrollPane>
</children>
</VBox>
âą
<ScrollPane prefViewportWidth="300.0" prefViewportHeight="200.0"> : CrĂ©e un ScrollPane avec une zone visible de 300Ă200 pixelsâą
vbarPolicy="AS_NEEDED" : La barre de dĂ©filement verticale apparaĂźt seulement si nĂ©cessaireâą
hbarPolicy="NEVER" : La barre de dĂ©filement horizontale n'apparaĂźt jamaisâą
<content> : Contient le VBox avec les éléments de la liste⹠Quand le contenu dépasse 200 pixels de hauteur, la barre de défilement apparaßt automatiquement
âïž PropriĂ©tĂ©s importantes du ScrollPane
Voici les propriétés les plus utilisées pour configurer un ScrollPane dans Scene Builder :
Propriétés de base (onglet Properties)
- Pref Viewport Width : Largeur de la zone visible (en pixels)
- Pref Viewport Height : Hauteur de la zone visible (en pixels)
- Hbar Policy : Politique de la barre horizontale (AS_NEEDED, ALWAYS, NEVER)
- Vbar Policy : Politique de la barre verticale (AS_NEEDED, ALWAYS, NEVER)
- Fit To Width : Ajuster le contenu Ă la largeur (utile pour les images)
- Fit To Height : Ajuster le contenu Ă la hauteur (utile pour les images)
Politiques des barres de défilement
- AS_NEEDED : La barre apparaßt seulement si le contenu dépasse (recommandé)
- ALWAYS : La barre est toujours visible, mĂȘme si pas nĂ©cessaire
- NEVER : La barre n'apparaĂźt jamais, mĂȘme si le contenu dĂ©passe
đĄ Bonnes pratiques avec ScrollPane
- Utilisez AS_NEEDED : C'est la politique la plus courante et la plus intuitive
- Contenu unique : Le ScrollPane ne peut contenir qu'un seul élément, utilisez un layout comme conteneur
- Définissez la taille du viewport : Spécifiez prefViewportWidth et prefViewportHeight
- Combinez avec d'autres layouts : Enveloppez VBox, HBox, GridPane, etc. dans un ScrollPane
- Testez avec beaucoup de contenu : Vérifiez que le défilement fonctionne correctement
đ ScrollPane vs autres layouts
Comparons le ScrollPane avec d'autres layouts similaires :
- ScrollPane vs autres layouts : ScrollPane ajoute le défilement, les autres layouts organisent le contenu
- ScrollPane est complémentaire : Il s'utilise avec d'autres layouts pour ajouter le défilement
- ScrollPane vs ListView : ScrollPane est générique, ListView est spécialisé pour les listes