// Fig. 11.16: CardDeck.java // Demonstrating CardLayout. import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class CardDeck extends Applet implements ActionListener { private Canvas c; private CardLayout cardManager; private Panel deck, card1, card2, card3, buttons; private Button b1, b2, b3, prevButton, nextButton, lastButton, firstButton; public void init() { setLayout( new BorderLayout() ); // create the panel with CardLayout deck = new Panel(); cardManager = new CardLayout(); deck.setLayout( cardManager ); // set up card1 and add it to Panel deck b1 = new Button( "card one" ); card1 = new Panel(); card1.add( b1 ); // add a button deck.add( card1, b1.getLabel() ); // add card to deck // set up card2 and add it to Panel deck b2 = new Button( "card two" ); c = new Canvas(); c.setBackground( Color.green ); c.setSize( 80, 80 ); card2 = new Panel(); card2.add( b2 ); // add a button card2.add( c ); // add a canvas deck.add( card2, b2.getLabel() ); // add card to deck // set up card3 and add it to Panel deck b3 = new Button( "card three" ); card3 = new Panel(); card3.setLayout( new BorderLayout() ); // set layout card3.add( new Button( "North" ), BorderLayout.NORTH ); card3.add( new Button( "West" ), BorderLayout.WEST ); card3.add( new Button( "East" ), BorderLayout.EAST ); card3.add( new Button( "Pole" ), BorderLayout.SOUTH ); card3.add( b3, BorderLayout.CENTER ); deck.add( card3, b3.getLabel() ); // add card to deck // create and layout Panel buttons that will control deck buttons = new Panel(); buttons.setLayout ( new GridLayout( 2, 2 ) ); buttons.add( firstButton = new Button( "First card" ) ); buttons.add( nextButton = new Button( "Next card" ) ); buttons.add( prevButton = new Button( "Previous card" ) ); buttons.add( lastButton = new Button( "Last card" ) ); firstButton.addActionListener( this ); nextButton.addActionListener( this ); prevButton.addActionListener( this ); lastButton.addActionListener( this ); // add Panel deck and Panel buttons to the applet add( buttons, BorderLayout.WEST ); add( deck, BorderLayout.EAST ); } public void actionPerformed( ActionEvent e ) { if ( e.getSource() == firstButton ) cardManager.first( deck ); // show first card else if ( e.getSource() == prevButton ) cardManager.previous( deck ); // show previous card else if ( e.getSource() == nextButton ) cardManager.next( deck ); // show next card else if ( e.getSource() == lastButton ) cardManager.last( deck ); // show last card } }