title: CardLayout with buttons that change the cards
body: <p>I am trying to write a short program that has a home page with title and 4 buttons, 3 of which will leave the home screen and go to a new page where you can input information accordingly.  I started by using a drag and drop editor but have found through forums i should be using cardlayout instead i have looked over the oracle tutorial but i want to use buttons to change cards not a combobox.  Is that possible.  </p>
  
  <p>here is the code from the tutorial what part would i need to change to make a button the action button that changes screens.</p>
  
  <p>thanks,</p>
  
  <pre><code>package layout;
  
  /*
   * CardLayoutDemo.java
   *
   */
  import java.awt.*;
    import java.awt.event.*;
  import javax.swing.*;
  
  public class CardLayoutDemo implements ItemListener {
      JPanel cards; //a panel that uses CardLayout
      final static String BUTTONPANEL = "Card with JButtons";
      final static String TEXTPANEL = "Card with JTextField";
  
  public void addComponentToPane(Container pane) {
      //Put the JComboBox in a JPanel to get a nicer look.
      JPanel comboBoxPane = new JPanel(); //use FlowLayout
      String comboBoxItems[] = { BUTTONPANEL, TEXTPANEL };
      JComboBox cb = new JComboBox(comboBoxItems);
      cb.setEditable(false);
      cb.addItemListener(this);
      comboBoxPane.add(cb);
  
      //Create the "cards".
      JPanel card1 = new JPanel();
      card1.add(new JButton("Button 1"));
      card1.add(new JButton("Button 2"));
      card1.add(new JButton("Button 3"));
  
      JPanel card2 = new JPanel();
      card2.add(new JTextField("TextField", 20));
  
      //Create the panel that contains the "cards".
      cards = new JPanel(new CardLayout());
      cards.add(card1, BUTTONPANEL);
      cards.add(card2, TEXTPANEL);
  
      pane.add(comboBoxPane, BorderLayout.PAGE_START);
      pane.add(cards, BorderLayout.CENTER);
  }
  
  public void itemStateChanged(ItemEvent evt) {
      CardLayout cl = (CardLayout)(cards.getLayout());
      cl.show(cards, (String)evt.getItem());
  }
  
  /**
   * Create the GUI and show it.  For thread safety,
   * this method should be invoked from the
   * event dispatch thread.
   */
  private static void createAndShowGUI() {
      //Create and set up the window.
      JFrame frame = new JFrame("CardLayoutDemo");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
      //Create and set up the content pane.
      CardLayoutDemo demo = new CardLayoutDemo();
      demo.addComponentToPane(frame.getContentPane());
  
      //Display the window.
      frame.pack();
      frame.setVisible(true);
  }
  
  public static void main(String[] args) {
      /* Use an appropriate Look and Feel */
      try {
          //UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
          UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
      } catch (UnsupportedLookAndFeelException ex) {
          ex.printStackTrace();
      } catch (IllegalAccessException ex) {
          ex.printStackTrace();
      } catch (InstantiationException ex) {
          ex.printStackTrace();
      } catch (ClassNotFoundException ex) {
          ex.printStackTrace();
      }
      /* Turn off metal's use of bold fonts */
      UIManager.put("swing.boldMetal", Boolean.FALSE);
  
      //Schedule a job for the event dispatch thread:
      //creating and showing this application's GUI.
      javax.swing.SwingUtilities.invokeLater(new Runnable() {
          public void run() {
              createAndShowGUI();
          }
      });
  }
  }
  </code></pre>