Java switch between cards using jbutton
===

I'm using a cardlayout and I want to make it so that the first card has a button and when clicked it will take it to card 2 which has a button that will take it back to card 1.  Here is my current code, and I've tried putting a few things in the actionPerformed method but I haven't had any success in getting it to work.  Also, I receive a syntax error on "this" on the lines with button1.addActionListener(this); and button2.addActionListener(this); which I assume is because my actionPerformed method isn't setup correctly.  Any help on getting the buttons setup would be greatly appreciated.

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;

    public class Main implements ItemListener {
    
    JPanel cards;
    
    public void addComponentToPane(Container pane) {        
        //create cards
        JPanel card1 = new JPanel();
        JPanel card2 = new JPanel();
        JButton button1 = new JButton("Button 1");
        JButton button2 = new JButton("Button 2");
        button1.addActionListener(this);
        button2.addActionListener(this);
        card1.add(button1);
        card2.add(button2);
        
        //create panel that contains cards
        cards = new JPanel(new CardLayout());
        cards.add(card1);
        cards.add(card2);        
        pane.add(cards, BorderLayout.CENTER);
    }
    
    public void itemStateChanged(ItemEvent evt) {
        CardLayout cl = (CardLayout)(cards.getLayout());
        cl.show(cards, (String)evt.getItem());
    }
    
    public static void createAndShowGUI() {
        //create and setup window
        JFrame frame = new JFrame("Frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        //create and setup content pane
        Main main = new Main();
        main.addComponentToPane(frame.getContentPane());
        
        //display window
        frame.pack();
        frame.setVisible(true);
    }
    
    public void actionPerformed(ActionEvent ae) {
        
    }            

    public static void main(String[] args) {
        //set look and feel
        try {
            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 bold fonts
        UIManager.put("swing.boldMetal", Boolean.FALSE);        
        
        //schedule job for the event dispatch thread creating and showing GUI        
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });     
    }   
}