Computer Science 122
Card Layout Example

/* An Applet that illustrates a Card Layout.  It creates a panel for each card with a button that brings up the next card. */

// To run this applet, click on Cards3.html.
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Cards extends Applet
{
    private Panel [] panels;
    private CardLayout deck;

    public void init ()
    {
        deck = new CardLayout ();
        setLayout (deck);
        panels = new Panel [5];
        for (int count = 0; count < 5; count ++)
            setUpPanel (panels [count], "" + count, count);
    } // method init

    private void setUpPanel (Panel panel, String name, int cardNumber)
    {
        Color c = getColor (cardNumber);
        panel = new Panel ();
        Canvas canvas = getCanvas (c);
        panel.add (canvas);
        Button button = new Button ("Next Card");
        button.addActionListener (new cardListener (this, deck));
        panel.add (button);
        add (panel, name);
    } // method setUpPanel

    private Color getColor (int cardNumber)
    {
        Color c = Color.red;
        switch (cardNumber)
        {
            case 0: c = Color.red; break;
            case 1: c = Color.blue; break;
            case 2: c = Color.green; break;
            case 3: c = Color.orange; break;
            case 4: c = Color.cyan; break;
            default: c = Color.black;
        } // switch
        return c;
    } // method getColor

    private Canvas getCanvas (Color c)
    {
        Canvas canvas = new Canvas ();
        canvas.setBackground (c);
        canvas.setSize (50, 50);
        return canvas;
    } // method getCanvas
} // class Cards

class cardListener implements ActionListener
{
    private Applet cardApplet;
    private CardLayout deck;

    cardListener (Applet cardApplet, CardLayout deck)
    {
        this.cardApplet = cardApplet;
        this.deck = deck;
    } // constructor

    public void actionPerformed (ActionEvent event)
    {
        deck.next (cardApplet);
    } // method actionPerformed
} // class firstListener