The Java Program: CardApplet.java

  1 /*
  2    <applet code=CardApplet width=350 height=150></applet>
  3 */
  4 
  5 import java.applet.Applet;
  6 import java.awt.CardLayout;
  7 import java.awt.BorderLayout;
  8 import java.awt.Component;
  9 import java.awt.Panel;
 10 import java.awt.Button;
 11 import java.awt.List;
 12 import java.awt.TextField;
 13 import java.awt.Checkbox;
 14 import java.awt.Label;
 15 
 16 import java.awt.event.ActionEvent;
 17 import java.awt.event.ActionListener;
 18 import java.awt.event.ItemEvent;
 19 import java.awt.event.ItemListener;
 20 
 21 class Card extends Panel {
 22    Card (String lbl, Component c) {
 23       add (new Label (lbl));
 24       add (c);
 25    }
 26 }
 27 
 28 // Panel of buttons to navigate among the different "screens"
 29 class ButtonBar extends Panel {
 30 
 31    private Button f,p,n,l;
 32    
 33    ButtonBar (final CardApplet c) {
 34       add (f=new Button ("First"));
 35       add (p=new Button ("Previous"));
 36       add (n=new Button ("Next"));
 37       add (l=new Button ("Last"));
 38 
 39       // one class for all buttons
 40       class Listener implements ActionListener {
 41          public void actionPerformed (ActionEvent e) {
 42             c.action (e.getActionCommand());
 43          }
 44       }
 45       f.addActionListener (new Listener ());
 46       p.addActionListener (new Listener ());
 47       n.addActionListener (new Listener ());
 48       l.addActionListener (new Listener ());
 49    }
 50 }
 51 
 52 
 53 public class CardApplet extends Applet {
 54 
 55    private Panel cards = new Panel();
 56    private CardLayout cl = new CardLayout();
 57    private List list = new List (0, false);
 58    
 59    public void flip ()    { cl.show (cards, list.getSelectedItem()); }
 60    public void first ()   { cl.first (cards); }
 61    public void next ()    { cl.next (cards); }
 62    public void previous() { cl.previous (cards); }
 63    public void last ()    { cl.last (cards); }
 64    public void action (String cmd) {
 65       if ("First".equals (cmd)) {
 66          cl.first (cards);
 67       } else if ("Previous".equals (cmd)) {
 68          cl.previous (cards);
 69       } else if ("Next".equals (cmd)) {
 70          cl.next (cards);
 71       } else if ("Last".equals (cmd)) {
 72          cl.last (cards);
 73       }
 74       // else nothing
 75    }
 76       
 77    
 78    public void init() {
 79       setLayout (new BorderLayout());
 80 
 81       cards.setLayout (cl);
 82 
 83       cards.add ("Card 1", new Card ("Card 1",new Button("one")));
 84       cards.add ("Card 2", new Card ("Card 2",new TextField("two",20)));
 85       cards.add ("Card 3", new Card ("Card 3",new Checkbox("three")));
 86 
 87       list.addItem ("Card 1");
 88       list.addItem ("Card 2");
 89       list.addItem ("Card 3");
 90 
 91       class Listener implements ItemListener {
 92          public void itemStateChanged (ItemEvent event) {
 93             flip ();
 94          }
 95       }
 96       list.addItemListener (new Listener ());
 97 
 98       add ("Center", cards);
 99       add ("South", new ButtonBar(this));
100       add ("West", list);
101    }
102 }