GroupLayout | Java Swing

GroupLayout regroupe ses composants et les place hiérarchiquement dans un conteneur. Le regroupement est effectué par des instances de la classe Group.

Group est une classe abstraite et deux classes concrètes qui implémentent cette classe sont SequentialGroup et ParallelGroup.

SequentialGroup positionne ses éléments séquentiellement les uns après les autres alors que ParallelGroup aligne ses éléments les uns sur les autres.
 
 
La classe GroupLayout fournit des méthodes telles que createParallelGroup() et createSequentialGroup() pour créer des groupes.

GroupLayout traite chaque axe indépendamment. Autrement dit, il existe un groupe représentant l’axe horizontal et un groupe représentant l’axe vertical. Chaque composant doit exister dans un groupe horizontal et vertical, sinon une exception IllegalStateException est levée pendant la mise en page, ou lorsque la taille minimale, préférée ou maximale est demandée.
 

Le constructeur de la classe GroupLayout :
  • GroupLayout(Container c): il est utilisé pour créer un GroupLayout pour le conteneur spécifié.

 

Les méthodes couramment utilisée de GroupLayout sont les suivantes:
  • addLayoutComponent(Component c, Object obj): Notifie qu’un Composant a été ajouté au conteneur parent.
  • getHonorsVisibility(): retourne si la visibilité des composants est prise en compte lors du dimensionnement et du positionnement des composants.
  • maximumLayoutSize(Container c): renvoie la taille maximale du conteneur spécifié.
  • getLayoutAlignmentX(): il renvoie l’alignement de l’axe x.
  • minimumLayoutSize(Container c): renvoie la taille minimale pour le conteneur spécifié.
  • getLayoutStyle(): renvoie le LayoutStyle utilisé pour calculer l’écart préféré entre les composants.

 
 

Exemple:

L’exemple suivant montre l’utilisation de GroupLayout en organisant les composants dans un JFrame. Nous créons les composants suivants: JLabel, JTextField, JButton et JCheckbox. Puis ajoutez-les au JFrame à l’aide de la méthode add(). La disposition est définie à l’aide de la méthode setLayout().

import javax.swing.*; 
import java.awt.Component; 
import static javax.swing.GroupLayout.Alignment.*; 
  
public class Main 
{       
    // Méthode principale
    public static void main(String[] args) 
    {  
        // frame
        JFrame f = new JFrame("Exemple de GroupLayout"); 

        // label
        JLabel label = new JLabel("Label:"); 
  
        // textField
        JTextField textField = new JTextField(); 
  
        // button
        JButton btn1 = new JButton("Bouton 1"); 
  
        // button
        JButton btn2 = new JButton("Bouton 2"); 

        // checkBox
        JCheckBox checkBox1 = new JCheckBox("CheckBox 1"); 
  
        // checkBox
        JCheckBox checkBox2 = new JCheckBox("CheckBox 2"); 
		
        // GroupLayout
        GroupLayout layout = new GroupLayout(f.getContentPane()); 
  
        // Définir la disposition des composant dans le frame
        f.getContentPane().setLayout(layout); 
  
        // Créer automatiquement des espaces vide
        layout.setAutoCreateGaps(true); 
  
        // Créer automatiquement un conteneur des espaces vide
        layout.setAutoCreateContainerGaps(true); 
  
        // il sert à définir le groupe horizontal
        layout.setHorizontalGroup(layout.createSequentialGroup() 
  
        // Ajouter l'étiquette
        .addComponent(label) 
  
        // Ajouter le groupe parallèle
        .addGroup(layout.createParallelGroup(LEADING) 
  
        // Ajouter le champ de texte
        .addComponent(textField) 
  
        // Ajouter le groupe séquentiel
        .addGroup(layout.createSequentialGroup() 
  
        // Ajouter le groupe parallèle
        .addGroup(layout.createParallelGroup(LEADING) 
  
        // Ajouter la 1er case à cocher 
        .addComponent(checkBox1)) 
  
        // Ajouter le groupe parallèle 
        .addGroup(layout.createParallelGroup(LEADING) 
  
        // Ajouter la 2eme case à cocher 
        .addComponent(checkBox2)))) 
  
        // Ajouter le groupe parallèle 
        .addGroup(layout.createParallelGroup(LEADING) 
  
        // Ajouter le bouton 1
        .addComponent(btn1) 
      
        // Ajouter le bouton 2
        .addComponent(btn2))); 
  
        //lier la taille des composants quel que soit leur emplacement
        layout.linkSize(SwingConstants.HORIZONTAL, btn1, btn2); 
        
        //Créer le groupe vertical
        layout.setVerticalGroup(layout.createSequentialGroup() 
          
			// Ajouter le groupe parallèle 
			.addGroup(layout.createParallelGroup(BASELINE) 
	  
			// Ajouter l'étiquette
			.addComponent(label) 
	  
			// Ajouter le champ de texte
			.addComponent(textField) 
	  
			// Ajouter le bouton 1
			.addComponent(btn1)) 
	  
			// Ajouter le groupe parallèle 
			.addGroup(layout.createParallelGroup(LEADING) 
	  
				// Ajouter le groupe séquentiel
				.addGroup(layout.createSequentialGroup() 
		  
				// Ajouter le groupe parallèle 
				.addGroup(layout.createParallelGroup(BASELINE) 
		  
				// Ajouter la 1er case à cocher 
				.addComponent(checkBox1) 
		  
				// Ajouter la 2eme case à cocher 
				.addComponent(checkBox2)) 
		  
				// Ajouter le groupe parallèle  
				.addGroup(layout.createParallelGroup(BASELINE))) 
		  
				// Ajouter le bouton 2
				.addComponent(btn2)
			)
		); 
  
        f.pack(); 
        f.show(); 
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    } 
}

Sortie:


 
Partagez cet article

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *