L'instance de la classe CardLayout construit une pile de composants se plaçant les uns au dessus des autres.
L'objet CardLayout traite les composants comme des cartes dont une seule peut être visible, par défaut, la première de la pile.
CardLayout pileCarte = new CardLayout();
Le gestionnaire de placement fournit plusieurs méthodes destinées à parcourir les cartes (first(), last(), previous() et next()) et à les afficher (show()).
carte.next(getContentPane());
Il est possible de fournir des intervalles horizontaux et verticaux entre le conteneur et le composant par l'intermédiaire d'un constructeur (CardLayout(int h, int l)) ou de méthodes spécifiques (setHGap() et setVGap()).
import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class CartePlacement extends JFrame implements ItemListener { private JPanel cartes; public CartePlacement() { super("Démonstration CardLayout"); this.creerInterface(); this.pack(); this.setVisible(true); } public void creerInterface() { JPanel pan = (JPanel) this.getContentPane(); JPanel panMenu = new JPanel(); String menus[] = { "Première carte", "Seconde carte" }; JComboBox jcbMenu = new JComboBox(menus); jcbMenu.addItemListener(this); panMenu.add(jcbMenu); JPanel carte1 = new JPanel(); carte1.add(new JButton("Premier Bouton")); carte1.add(new JTextField(20)); JPanel carte2 = new JPanel(); carte2.add(new JTextField(20)); carte2.add(new JButton("Second bouton")); cartes = new JPanel(new CardLayout()); cartes.add(carte1, menus[0]); cartes.add(carte2, menus[1]); pan.add(panMenu, BorderLayout.NORTH); pan.add(cartes, BorderLayout.CENTER); } public void itemStateChanged(ItemEvent e) { CardLayout carte = (CardLayout) (cartes.getLayout()); carte.show(cartes, (String) e.getItem()); } public static void main(String[] args) { CartePlacement doite = new CartePlacement(); } }