[Dúvida]Card Layout

Olá pessoal, como funciona esse cadr layout exatamente, andei pesquisando mas não entendi mto bem e, qual a diferença(vantagem, desvantagem)
para outros layouts

vlw!

Dê uma olhada nestes materiais:
http://download.oracle.com/javase/tutorial/uiswing/layout/card.html

http://www.dca.fee.unicamp.br/cursos/PooJava/graphic/grl_card.html

E, mais específico, na documentação:
http://download.oracle.com/javase/1.4.2/docs/api/java/awt/CardLayout.html

Abraços!

Bem, continuo sem entender muito bem, alguém poderia me dar uma “luz”?

Um efeito que pode ser atingido com CardLayout é aquele de telas de instalação de programas no Windows, que vai pressionando next, next, next. Existem vários paineis sobrepostos e conforme a ação do botão, muda o painel que fica no topo. O painel que estiver no topo, é o que pode ser visualizado pelo usuário.

http://download.oracle.com/javase/tutorial/uiswing/layout/card.html

Neste link tem dois exemplos apresentando os mesmos componentes, porém um usando CardLayout e o outro com TabbedPane. Execute os dois exemplos e veja a diferença.

Tá, mas por exemplo, como eu uso os métodos do gerenciador que estabelecem funcionalidades que permitem “navegar” entre os componentes empilhados
tais como first(), next(), previous() e last()?

Rode o seguinte programa (ExemploCardLayout) para um exemplo de o que pode ser feito com CardLayout.

package guj.cardlayout;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class ExemploCardLayout extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JPanel pnlBotoes = null;
    private JButton btnProximo = null;
    private JButton btnAnterior = null;
    private JButton btnPrimeiro = null;
    private JButton btnUltimo = null;
    private JPanel pnlCardLayout = null;
    private ClientesPanel clientesPanel = null;
    private VendasPanel vendasPanel = null;
    private ContasPanel contasPanel = null;
    private JButton btnVendas = null;
    /**
     * This method initializes pnlBotoes	
     * 	
     * @return javax.swing.JPanel	
     */
    private JPanel getPnlBotoes() {
        if (pnlBotoes == null) {
            pnlBotoes = new JPanel();
            pnlBotoes.setLayout(new FlowLayout());
            pnlBotoes.add(getBtnProximo(), null);
            pnlBotoes.add(getBtnAnterior(), null);
            pnlBotoes.add(getBtnPrimeiro(), null);
            pnlBotoes.add(getBtnUltimo(), null);
            pnlBotoes.add(getBtnVendas(), null);
        }
        return pnlBotoes;
    }

    /**
     * This method initializes btnProximo	
     * 	
     * @return javax.swing.JButton	
     */
    private JButton getBtnProximo() {
        if (btnProximo == null) {
            btnProximo = new JButton();
            btnProximo.setText("Próximo");
            btnProximo.setActionCommand("Proximo");
            btnProximo.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    ((CardLayout)pnlCardLayout.getLayout()).next(pnlCardLayout);
                }
            });
        }
        return btnProximo;
    }

    /**
     * This method initializes btnAnterior	
     * 	
     * @return javax.swing.JButton	
     */
    private JButton getBtnAnterior() {
        if (btnAnterior == null) {
            btnAnterior = new JButton();
            btnAnterior.setText("Anterior");
            btnAnterior.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    ((CardLayout)pnlCardLayout.getLayout()).previous(pnlCardLayout);
                }
            });
        }
        return btnAnterior;
    }

    /**
     * This method initializes btnPrimeiro	
     * 	
     * @return javax.swing.JButton	
     */
    private JButton getBtnPrimeiro() {
        if (btnPrimeiro == null) {
            btnPrimeiro = new JButton();
            btnPrimeiro.setText("Primeiro");
            btnPrimeiro.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    ((CardLayout)pnlCardLayout.getLayout()).first(pnlCardLayout);
                }
            });
        }
        return btnPrimeiro;
    }

    /**
     * This method initializes btnUltimo	
     * 	
     * @return javax.swing.JButton	
     */
    private JButton getBtnUltimo() {
        if (btnUltimo == null) {
            btnUltimo = new JButton();
            btnUltimo.setText("Último");
            btnUltimo.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    ((CardLayout)pnlCardLayout.getLayout()).last(pnlCardLayout);
                }
            });
        }
        return btnUltimo;
    }

    /**
     * This method initializes pnlCardLayout	
     * 	
     * @return javax.swing.JPanel	
     */
    private JPanel getPnlCardLayout() {
        if (pnlCardLayout == null) {
            pnlCardLayout = new JPanel();
            pnlCardLayout.setLayout(new CardLayout());
            pnlCardLayout.add(getClientesPanel(), getClientesPanel().getName());
            pnlCardLayout.add(getVendasPanel(), getVendasPanel().getName());
            pnlCardLayout.add(getContasPanel(), getContasPanel().getName());
        }
        return pnlCardLayout;
    }

    /**
     * This method initializes clientesPanel	
     * 	
     * @return guj.cardlayout.ClientesPanel	
     */
    private ClientesPanel getClientesPanel() {
        if (clientesPanel == null) {
            clientesPanel = new ClientesPanel();
            clientesPanel.setName("clientesPanel");
        }
        return clientesPanel;
    }

    /**
     * This method initializes vendasPanel	
     * 	
     * @return guj.cardlayout.VendasPanel	
     */
    private VendasPanel getVendasPanel() {
        if (vendasPanel == null) {
            vendasPanel = new VendasPanel();
            vendasPanel.setName("vendasPanel");
        }
        return vendasPanel;
    }

    /**
     * This method initializes contasPanel	
     * 	
     * @return guj.cardlayout.ContasPanel	
     */
    private ContasPanel getContasPanel() {
        if (contasPanel == null) {
            contasPanel = new ContasPanel();
            contasPanel.setName("contasPanel");
        }
        return contasPanel;
    }

    /**
     * This method initializes btnVendas	
     * 	
     * @return javax.swing.JButton	
     */
    private JButton getBtnVendas() {
        if (btnVendas == null) {
            btnVendas = new JButton();
            btnVendas.setText("Vendas");
            btnVendas.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    ((CardLayout)pnlCardLayout.getLayout()).show(pnlCardLayout, vendasPanel.getName());
                }
            });
        }
        return btnVendas;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ExemploCardLayout thisClass = new ExemploCardLayout();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
            }
        });
    }

    /**
     * This is the default constructor
     */
    public ExemploCardLayout() {
        super();
        initialize();
    }

    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
        this.setSize(616, 233);
        this.setContentPane(getJContentPane());
        this.setTitle("Exemplo de CardLayout");
    }

    /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getPnlBotoes(), BorderLayout.SOUTH);
            jContentPane.add(getPnlCardLayout(), BorderLayout.CENTER);
        }
        return jContentPane;
    }

}  //  @jve:decl-index=0:visual-constraint="10,10"
package guj.cardlayout;

import java.awt.BorderLayout;

import javax.swing.JPanel;
import javax.swing.JTextField;

public class ClientesPanel extends JPanel {

    private static final long serialVersionUID = 1L;
    private JTextField txtClientes = null;

    /**
     * This is the default constructor
     */
    public ClientesPanel() {
        super();
        initialize();
    }

    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
        this.setSize(300, 200);
        this.setLayout(new BorderLayout());
        this.add(getTxtClientes(), BorderLayout.CENTER);
    }

    /**
     * This method initializes txtClientes
     * 
     * @return javax.swing.JTextField
     */
    private JTextField getTxtClientes() {
        if (txtClientes == null) {
            txtClientes = new JTextField();
            txtClientes.setText("Clientes");
        }
        return txtClientes;
    }

}
package guj.cardlayout;

import java.awt.BorderLayout;

import javax.swing.JLabel;
import javax.swing.JPanel;

public class ContasPanel extends JPanel {

    private static final long serialVersionUID = 1L;
    private JLabel lblContas = null;
    /**
     * This is the default constructor
     */
    public ContasPanel() {
        super();
        initialize();
    }

    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
        lblContas = new JLabel();
        lblContas.setText("Contas");
        this.setSize(300, 200);
        this.setLayout(new BorderLayout());
        this.add(lblContas, BorderLayout.CENTER);
    }

}
package guj.cardlayout;

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JPanel;

public class VendasPanel extends JPanel {

    private static final long serialVersionUID = 1L;
    private JButton btnVendas = null;

    /**
     * This is the default constructor
     */
    public VendasPanel() {
        super();
        initialize();
    }

    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
        this.setSize(300, 200);
        this.setLayout(new BorderLayout());
        this.add(getBtnVendas(), BorderLayout.CENTER);
    }

    /**
     * This method initializes btnVendas
     * 
     * @return javax.swing.JButton
     */
    private JButton getBtnVendas() {
        if (btnVendas == null) {
            btnVendas = new JButton();
            btnVendas.setText("Vendas");
        }
        return btnVendas;
    }

}