Une question qui revient souvent sur ce forum concerne la mise en page des composants graphiques au sein d'une application SWING / AWT.

Je propose d'utiliser ce sujet pour référencer tous les layouts qui peuvent sembler utiles aux applications graphiques AWT / SWING.

Si vous en connaissez qui ne sont pas dans la liste, merci de laisser des liens vers :

  • une explication de son fonctionnement ;
  • la librairie (.jar) contenant la classe à utiliser ;
  • éventuellement une capture d'écran.

Vous pouvez aussi mettre un résumé des avantages / inconvénients de ce layout.

PS1 : j'éditerai mon post au fur et à mesure
PS2 : je ne sais pas si il y en a, mais si un layout est payant, merci de le préciser
PS3 : si vous avez des questions ou des problèmes concernant un layout, merci de créer un nouveau sujet.

Les layouts compris dans le jdk :


  • BorderLayout [image] : place les composants en indiquant simplement leur emplacementde la façon NORD, SUD, EST, OUEST, CENTRE (layout par défaut des composants SWING)


  • BoxLayout [image] : aligne les composants sur un axe vertical ou horizontal.


  • CardLayout [image1 | image2] : superpose plusieurs jpanels et affiche celui désiré. Permet l'implémentation d'une interface à onglets.


  • FlowLayout [image] : place les composants à la suite sur une ligne, puis sur une autre ligne si le conteneur n'est pas assez large.


  • GridBagLayout [image] : place les composants dans un tableau de cellules de tailles variables. (très flexibles et puissants mais plutôt complexes à appréhender)


  • GridLayout [image] : place les composants dans un tableau de cellules de tailles identiques.


  • GroupLayout [image] : développé à l'origine pour les GUI builder (générateurs d'interface comme Matisse ou Visual Editor). Ce layout utilise 2 groupes correspondant à chaque dimension (verticale et horizontale), donc chaque composant doit être ajouté 2 fois pour définir sa place verticale et horizontale.


  • SpringLayout [image1 | image2] : développé à l'origine pour les GUI builder (générateurs d'interface comme Matisse ou Visual Editor), permet de spécifier des relations/distances entre les différents composants.


Autres layouts :