Médiaforma

All posts tagged FlowLayout

La mise en page la plus simple (c’est également celle qui est utilisée par défaut) correspond à la classe FlowLayout.

Le constructeur de la classe FlowLayout admet trois syntaxes :

public FlowLayout();
public FlowLayout(int align);
public FlowLayout(int align, int hgap, int vgap);

Dans le premier cas, les objets sont centrés dans l’espace qui leur est réservé.

Dans le deuxième cas, le paramètre align indique l’alignement des objets. Il peut prendre l’une des trois valeurs suivantes :

  • FlowLayout.LEFT;
  • FlowLayout.CENTER;
  • FlowLayout.RIGHT;

Dans le troisième cas, le paramètre align indique toujours l’alignement des objets. Les paramètres hgap et vgap correspondent respectivement à l’espacement horizontal et vertical (en pixels) des objets.

Exemples :

Ce premier exemple utilise l’alignement et l’espacement par défaut. Ici, la fenêtre fait 300×150 pixels. Un JButton, un JLabel et un JTextField sont ajoutés dans un JPanel.

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class FLayout extends JFrame{
    public FLayout(){
        this.setTitle("Flow Layout");
        this.setSize(300, 150);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null); //Centre fenêtre dans écran
        JPanel container = new JPanel();
        container.setLayout(new FlowLayout());
        container.add(new JButton("un JButton"));
        container.add(new JLabel("un JLabel"));
        container.add(new JTextField("un JTextField"));
        this.setContentPane(container);
        this.setVisible(true);
    }
    public static void main(String[] args) {
        FLayout fl = new FLayout();
    }
}

Le constructeur de la classe FLayout commence par définir les caractéristiques de la fenêtre :

this.setTitle("Flow Layout");
this.setSize(300, 150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null); //Centre fenêtre dans écran

Il définit ensuite un conteneur JPanel et indique que la mise en page sera de type FlowLayout:

JPanel container = new JPanel();
container.setLayout(new FlowLayout());

Puis y ajoute un JButton, un JLabel et un JTextField :

container.add(new JButton("un JButton"));
container.add(new JLabel("un JLabel"));
container.add(new JTextField("un JTextField"));

Le panel est enfin affecté à la fenêtre et la fenêtre est affichée :

this.setContentPane(container);
this.setVisible(true);

La méthode main() se content d’instancier la classe FLayout :

public static void main(String[] args) {
    FLayout fl = new FLayout();
}

Voici le résultat :

 

 

Exercice

Entrainez-vous à :

  1. Créer un FlowLayout aligné à gauche.
  2. Créer un FlowLayout aligné à gauche et dont les éléments sont espacés de 50 pixels horizontalement de 30 pixels verticalement.

Solution

Il suffit d’utiliser les deux autres constructeurs de la méthode setLayout() :

container.setLayout(new FlowLayout(FlowLayout.LEFT));
container.setLayout(new FlowLayout(FlowLayout.LEFT, 50, 30));

Les objets AWT apparaissent en général dans l’ordre dans lequel ils ont été définis. Pour parfaire la mise en page, vous pouvez utiliser plusieurs classes AWT :

  • FlowLayout
  • GridLayout
  • GridBagLayout
  • BorderLayout
  • CardLayout

Les articles suivants vont vous montrer comment utiliser ces diverses mises en page.