Java AWT | CardLayout Class - GeeksforGeeks

17 Aug, 2021
The CardLayout class manages the components in such a way that only one component is visible at a time. It treats each component as a card in the container. Only one card is visible at a time, and the container acts as a stack of cards. The first component added to a CardLayout object is the visible component when the container is first displayed.
Constructors: 
CardLayout(): It is used to create a new card layout with gaps of size is zero.CardLayout(int horizontalgap, int verticalgap): It is used to create a new CardLayout class with the specified horizontal and vertical gaps.
CardLayout(): It is used to create a new card layout with gaps of size is zero.
CardLayout(int horizontalgap, int verticalgap): It is used to create a new CardLayout class with the specified horizontal and vertical gaps.
Commonly Used Methods:  
getLayoutAlignmentX(Container parent): Returns the alignment along the x-axis.
getLayoutAlignmentY(Container parent): Returns the alignment along the y-axis.
getVgap(): Used to get the vertical gap between components.
addLayoutComponent(Component cm, Object cn): Used to add the specified component to this card layout’s internal table of names.
getHgap(): Used to get the horizontal gap between components.
toString(): Returns a string representation of the state of this card layout.
removeLayoutComponent(Component cm): Used to remove the specified component from the layout.
Below programs illustrate the CardLayout class:  
Program 1: In the below program we are arranging several JLabel components in a JFrame, whose instance class is “Cardlayout“. We create 3 JButton components named “bt1“, “bt2“, “bt3” and then add them to the JFrame by the using add() method. We set the size and visibility of the frame by method setSize() and setVisible(). The layout is set by the method setLayout() method.
Java
// Java program to illustrate the CardLayout Classimport java.awt.*;import java.awt.event.*;import javax.swing.JFrame;import javax.swing.*; // class extends JFrame and implements actionlistenerpublic class Cardlayout extends JFrame implements ActionListener {     // Declaration of objects of CardLayout class.    CardLayout card;     // Declaration of objects of JButton class.    JButton b1, b2, b3;     // Declaration of objects    // of Container class.    Container c;     Cardlayout()    {         // to get the content        c = getContentPane();         // Initialization of object "card"        // of CardLayout class with 40        // horizontal space and 30 vertical space .        card = new CardLayout(40, 30);         // set the layout        c.setLayout(card);         // Initialization of object "b1" of JButton class.        b1 = new JButton("GEEKS");         // Initialization of object "b2" of JButton class.        b2 = new JButton("FOR");         // Initialization of object "b3" of JButton class.        b3 = new JButton("GEEKS");         // this Keyword refers to current object.        // Adding Jbutton "b1" on JFrame using ActionListener.        b1.addActionListener(this);         // Adding Jbutton "b2" on JFrame using ActionListener.        b2.addActionListener(this);         // Adding Jbutton "b3" on JFrame using ActionListener.        b3.addActionListener(this);         // Adding the JButton "b1"        c.add("a", b1);         // Adding the JButton "b2"        c.add("b", b2);         // Adding the JButton "b1"        c.add("c", b3);    }         public void actionPerformed(ActionEvent e)    {                 // call the next card        card.next(c);    }     // Main Method    public static void main(String[] args)    {                 // Creating Object of CardLayout class.        Cardlayout cl = new Cardlayout();         // Function to set size of JFrame.        cl.setSize(400, 400);         // Function to set visibility of JFrame.        cl.setVisible(true);         // Function to set default operation of JFrame.        cl.setDefaultCloseOperation(EXIT_ON_CLOSE);    }}
Output: 
Program 2: In below program we are arranging 4 JLabel components in a JFrame, whose class “CardlayoutDemo“. We create 4 JButton components named “firstbtn“, “nextbtn“, “previousbtn“, “lastbtn” and 4 JLabel components named “jl1“, “jl2“, “jl3” “jl4“. Here we are also creating 4 JPanel components named as “jp1“, “jp2“, “jp3“, “jp4” and then add them to the JFrame by the using add() method. We will set the size, visibility and title of the frame by using setSize(), setVisible() and setTitle() method respectively. The layout is set by using setLayout() method. 
Java
// Java program to show Example of CardLayout.// in java. Importing different Package.import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*; // class extends JFramepublic class CardLayoutDemo extends JFrame {     // Initialization the value of    // current card is 1 .    private int currentCard = 1;     // Declaration of objects    // of CardLayout class.    private CardLayout cl;     public CardLayoutDemo()    {         // Function to set visibility of JFrame        setTitle("Card Layout Example");         // Function to set visibility of JFrame        setSize(300, 150);         // Creating Object of "Jpanel" class        JPanel cardPanel = new JPanel();         // Initialization of object "c1"        // of CardLayout class.        cl = new CardLayout();         // set the layout        cardPanel.setLayout(cl);         // Initialization of object        // "jp1" of JPanel class.        JPanel jp1 = new JPanel();         // Initialization of object        // "jp2" of CardLayout class.        JPanel jp2 = new JPanel();         // Initialization of object        // "jp3" of CardLayout class.        JPanel jp3 = new JPanel();         // Initialization of object        // "jp4" of CardLayout class.        JPanel jp4 = new JPanel();         // Initialization of object        // "jl1" of JLabel class.        JLabel jl1 = new JLabel("Card1");         // Initialization of object        // "jl2" of JLabel class.        JLabel jl2 = new JLabel("Card2");         // Initialization of object        // "jl3" of JLabel class.        JLabel jl3 = new JLabel("Card3");         // Initialization of object        // "jl4" of JLabel class.        JLabel jl4 = new JLabel("Card4");         // Adding JPanel "jp1" on JFrame.        jp1.add(jl1);         // Adding JPanel "jp2" on JFrame.        jp2.add(jl2);         // Adding JPanel "jp3" on JFrame.        jp3.add(jl3);         // Adding JPanel "jp4" on JFrame.        jp4.add(jl4);         // Adding the cardPanel on "jp1"        cardPanel.add(jp1, "1");         // Adding the cardPanel on "jp2"        cardPanel.add(jp2, "2");         // Adding the cardPanel on "jp3"        cardPanel.add(jp3, "3");         // Adding the cardPanel on "jp4"        cardPanel.add(jp4, "4");         // Creating Object of "JPanel" class        JPanel buttonPanel = new JPanel();         // Initialization of object        // "firstbtn" of JButton class.        JButton firstBtn = new JButton("First");         // Initialization of object        // "nextbtn" of JButton class.        JButton nextBtn = new JButton("Next");         // Initialization of object        // "previousbtn" of JButton class.        JButton previousBtn = new JButton("Previous");         // Initialization of object        // "lastbtn" of JButton class.        JButton lastBtn = new JButton("Last");         // Adding JButton "firstbtn" on JFrame.        buttonPanel.add(firstBtn);         // Adding JButton "nextbtn" on JFrame.        buttonPanel.add(nextBtn);         // Adding JButton "previousbtn" on JFrame.        buttonPanel.add(previousBtn);         // Adding JButton "lastbtn" on JFrame.        buttonPanel.add(lastBtn);         // add firstbtn in ActionListener        firstBtn.addActionListener(new ActionListener()        {            public void actionPerformed(ActionEvent arg0)            {                                 // used first c1 CardLayout                cl.first(cardPanel);                 // value of currentcard is 1                currentCard = 1;            }        });         // add lastbtn in ActionListener        lastBtn.addActionListener(new ActionListener()        {            public void actionPerformed(ActionEvent arg0)            {                 // used last c1 CardLayout                cl.last(cardPanel);                 // value of currentcard is 4                currentCard = 4;            }        });         // add nextbtn in ActionListener        nextBtn.addActionListener(new ActionListener()        {            public void actionPerformed(ActionEvent arg0)            {                 // if condition apply                if (currentCard < 4)                {                                         // increment the value of currentcard by 1                    currentCard += 1;                     // show the value of currentcard                    cl.show(cardPanel, "" + (currentCard));                }            }        });         // add previousbtn in ActionListener        previousBtn.addActionListener(new ActionListener()        {            public void actionPerformed(ActionEvent arg0)            {                // if condition apply                if (currentCard > 1) {                     // decrement the value                    // of currentcard by 1                    currentCard -= 1;                     // show the value of currentcard                    cl.show(cardPanel, "" + (currentCard));                }            }        });         // used to get content pane        getContentPane().add(cardPanel, BorderLayout.NORTH);         // used to get content pane        getContentPane().add(buttonPanel, BorderLayout.SOUTH);    }     // Main Method    public static void main(String[] args)    {         // Creating Object of CardLayoutDemo class.        CardLayoutDemo cl = new CardLayoutDemo();         // Function to set default operation of JFrame.        cl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);         // Function to set visibility of JFrame.        cl.setVisible(true);    }}
Output: 
Note: The above programs might not run in an online IDE. Please use an offline compiler.
Reference: https://docs.oracle.com/javase/7/docs/api/java/awt/CardLayout.html  
anikaseth98
Java-AWT
Java
Java Programs
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Object Oriented Programming (OOPs) Concept in Java
HashMap in Java with Examples
Stream In Java
Interfaces in Java
How to iterate any Map in Java
Initializing a List in Java
Convert a String to Character Array in Java
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class