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.

  1. Notions
  2. Questions
  3. 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) puis setBounds en Swing), mais il est fragile.

  • En Swing, un JPanel utilise par défaut une disposition …, alors que le contenu d'une JFrame utilise une disposition ….

    Voir la réponse

    En Swing, un JPanel utilise par défaut une disposition en flux, alors que le contenu d'une JFrame utilise 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 JFrame Swing, 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 JFrame est en bordure et add sans 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 à un JPanel, en flux par défaut.