Les gestionnaires de disposition
Comment une fenêtre place ses composants sans coordonnées fixes : dispositions en flux, en ligne et en colonne, en bordure, en grille, en pile, ancrée, imbrication de conteneurs et comportement au redimensionnement.
- 29 cartes
- 3 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
Quelques cartes du deck
Conteneur : de quoi s'agit-il ?
Voir la réponse
Composant dont le rôle est d'en accueillir d'autres et de les placer ; il peut lui-même être placé dans un autre du même genre.
Une fenêtre est un arbre de conteneurs : chacun a sa disposition, et les composants simples (bouton, champ) en sont les feuilles.
Pourquoi ne pas placer les composants avec des coordonnées fixes en pixels ?
- Parce que la taille de la fenêtre, la police et la langue changent la place nécessaire
- Parce que Java refuse d'afficher un composant sans gestionnaire de disposition
- Parce que des coordonnées fixes ralentissent le dessin de la fenêtre
- Parce qu'un composant placé en pixels ne reçoit plus les clics
Voir la réponse
Parce que la taille de la fenêtre, la police et la langue changent la place nécessaire
Un libellé change de longueur à la traduction (« Save » devient « Enregistrer »), une police plus grande déborde, une fenêtre plus petite coupe. Un gestionnaire recalcule tout cela à chaque affichage. Le placement en pixels reste possible (
setLayout(null)puissetBoundsen Swing), mais il est fragile.En Swing, un
JPanelutilise par défaut une disposition …, alors que le contenu d'uneJFrameutilise une disposition ….Voir la réponse
En Swing, un
JPanelutilise par défaut une disposition en flux, alors que le contenu d'uneJFrameutilise une disposition en bordure.D'où le piège classique : dans une
JFrame,add(composant)sans précision place le composant au centre, et le suivant le remplace.Gestionnaire de disposition : de quoi s'agit-il ?
Voir la réponse
Objet associé à un composant d'accueil qui calcule la position et la taille de chaque composant selon une règle, à chaque affichage et redimensionnement.
Le programmeur décrit des contraintes (« en haut », « sur toute la largeur ») et non des pixels : le gestionnaire s'adapte à la taille de la fenêtre, à la police et à la langue.
Qu'affiche cette
JFrameSwing, avec sa disposition par défaut ?
```java
JFrame fenetre = new JFrame("Test");
fenetre.add(new JButton("A"));
fenetre.add(new JButton("B"));
fenetre.pack();
fenetre.setVisible(true);`- Les boutons A et B côte à côte sur une ligne
- Seul le bouton B, qui occupe tout le centre
- Le bouton A au-dessus du bouton B
- Les boutons A et B superposés, le A étant visible
Voir la réponse
Seul le bouton B, qui occupe tout le centre
Le contenu d'une
JFrameest en bordure etaddsans zone vise le centre. Un seul composant tient dans une zone : B remplace A. Pour les mettre côte à côte, on ajoute les deux à unJPanel, en flux par défaut.