Open In App

Java AWT | CardLayout Class

Improve
Improve
Like Article
Like
Save
Share
Report

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: 

  1. CardLayout(): It is used to create a new card layout with gaps of size is zero.
  2. 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 Class
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.*;
 
// class extends JFrame and implements actionlistener
public 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 JFrame
public 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 
 



Last Updated : 17 Aug, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads