Um objeto tipo CardLayout é um gerenciado de layout para um
container, que trata cada componente neste container como um cartão (em um rolodex), sendo que somente um cartão pode ser visto por vez. O primeiro componente acrescentado ao CardLayout é o que será exibido quando a aplicação abre.
Vamos ver uma aplicação para entender melhor. O código java que usei vai criar uma aplicação com painel com dois paineis: o primeiro contem um combobox cujo listener permite trocar os cards e o outro painel foi criada com CardLayout, gerando um aplicativo com a seguinte "cara":
O código simplificado é:
public class ExemploCardLayout implements ItemListener {
JPanel cartoes; //é neste panel que utilizaremos CardLayout
final static String BUTTONPANEL = "Cartao com JButtons";
final static String TEXTPANEL = "Cartao com JTextField";
final static String CHECKPANEL = "Cartao com JCheckBox";
public void adicionarComponentesAoPanel(Container pane) {
JPanel comboBoxPane = new JPanel();
String comboBoxItems[] = { BUTTONPANEL, TEXTPANEL, CHECKPANEL };
JComboBox cb = new JComboBox(comboBoxItems);
cb.setEditable(false);
cb.addItemListener(this);
comboBoxPane.add(cb);
//Cria os "cartoes".
// 1. botões
JPanel cartaoComBotoes = new JPanel();
cartaoComBotoes.add(new JButton("Botao n#1"));
cartaoComBotoes.add(new JButton("Botao n#2"));
cartaoComBotoes.add(new JButton("Botao n#3"));
// 2. texto
JPanel cartaoComTexto = new JPanel();
cartaoComTexto.add(new JTextField("Campo de texto de exemplo", 20));
// 3. checkbox
JCheckBox chinButton;
JCheckBox glassesButton;
JCheckBox hairButton;
JCheckBox teethButton;
chinButton = new JCheckBox("Chin");
chinButton.setMnemonic(KeyEvent.VK_C);
chinButton.setSelected(false);
glassesButton = new JCheckBox("Glasses");
glassesButton.setMnemonic(KeyEvent.VK_G);
glassesButton.setSelected(false);
hairButton = new JCheckBox("Hair");
hairButton.setMnemonic(KeyEvent.VK_H);
hairButton.setSelected(false);
teethButton = new JCheckBox("Teeth");
teethButton.setMnemonic(KeyEvent.VK_T);
teethButton.setSelected(true);
JPanel cartaoComCheckbox = new JPanel();
cartaoComCheckbox.add(chinButton);
cartaoComCheckbox.add(glassesButton);
cartaoComCheckbox.add(hairButton);
cartaoComCheckbox.add(teethButton);
//Cpanel que conterá os cartoes
cartoes = new JPanel(new CardLayout());
cartoes.add(cartaoComBotoes, BUTTONPANEL);
cartoes.add(cartaoComTexto, TEXTPANEL);
cartoes.add(cartaoComCheckbox, CHECKPANEL);
pane.add(comboBoxPane, BorderLayout.PAGE_START);
// note que os cartões estão utilizando BORDERLAYOUT
pane.add(cartoes, BorderLayout.CENTER);
}
// trocar entre os cartões
public void itemStateChanged(ItemEvent evt) {
CardLayout cl = (CardLayout)(cartoes.getLayout());
cl.show(cartoes, (String)evt.getItem());
}
/**
* Criate GUI e mostra
*/
private static void createAndShowGUI() {
JFrame frame = new JFrame("Exemplo com gerenciador CardLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ExemploCardLayout demo = new ExemploCardLayout();
ex.adicionarComponentesAoPanel(frame.getContentPane());
//mostra o frame
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Fig. Cartão com os botões
Fig. Cartão com Checkbox
Fig. Cartão com Texto
cara me dá uma mao, como eu faria isso com o netbeans? me perco na hora de adaptar o codigo
ResponderExcluirOi Bruna. Como posso te ajudar?
ExcluirQual é a dificuldade que você tem? Conseguiu criar os dois paineis? Definiu o gerenciador de layout?
Vou tentar colocar num post passo a passo, ok?