Explanation and examples of Java card layout Manager

  • 2020-09-28 08:51:50
  • OfStack

The layout manager implemented by the CardLayout class is called the card layout manager and is used to manipulate the containers or components contained in the containers it manages. Each container or component added directly to its managed container is a card, the first container or component added is considered to be the first card, the last card added is the last card, and the first card is displayed on the first run. So let's look at an example of how it works.

Source:


import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
 

public class TestMain extends JFrame {
  private JPanel pane = null; //  The main JPanel the JPanel Layout management will be set to CardLayout
  private JPanel p = null; //  Put the button JPanel
  private CardLayout card = null; // CardLayout Layout manager 
  private JButton button_1 = null; //  on 1 step 
  private JButton button_2 = null; //  Under the 1 step 
  private JButton b_1 = null, b_2 = null, b_3 = null; // 3 I can just flip it over to JPanel Buttons for components 
  private JPanel p_1 = null, p_2 = null, p_3 = null; //  To switch the 3 a JPanel
  
  public TestMain() {
    super("CardLayout Test");
    try {
      //  will LookAndFeel Set to Windows style 
      UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    /** create 1 Three new card layouts with specified horizontal and vertical gaps */
    card = new CardLayout(5, 5);
    pane = new JPanel(card); // JPanel Layout management will be set to CardLayout
    p = new JPanel(); //  Construct put button JPanel
    button_1 = new JButton("<  on 1 step ");
    button_2 = new JButton(" Under the 1 step  >");
    b_1 = new JButton("1");
    b_2 = new JButton("2");
    b_3 = new JButton("3");
    b_1.setMargin(new Insets(2,2,2,2));
    b_2.setMargin(new Insets(2,2,2,2));
    b_3.setMargin(new Insets(2,2,2,2));
    p.add(button_1);
    p.add(b_1);
    p.add(b_2);
    p.add(b_3);
    p.add(button_2);
    p_1 = new JPanel();
    p_2 = new JPanel();
    p_3 = new JPanel();
    p_1.setBackground(Color.RED);
    p_2.setBackground(Color.BLUE);
    p_3.setBackground(Color.GREEN);
    p_1.add(new JLabel("JPanel_1"));
    p_2.add(new JLabel("JPanel_2"));
    p_3.add(new JLabel("JPanel_3"));
    pane.add(p_1, "p1");
    pane.add(p_2, "p2");
    pane.add(p_3, "p3");
    /** Here is a component that flips to the card layout for reference API The documents in the */
    button_1.addActionListener(new ActionListener(){ //  on 1 Step button action 
      public void actionPerformed(ActionEvent e) {
        card.previous(pane);
      }
    });
    button_2.addActionListener(new ActionListener(){ //  Under the 1 Step button action 
      public void actionPerformed(ActionEvent e) {
        card.next(pane);
      }
    });
    b_1.addActionListener(new ActionListener() { //  Flip straight to p_1
      public void actionPerformed(ActionEvent e) {
        card.show(pane, "p1");
      }
    });
    b_2.addActionListener(new ActionListener() { //  Flip straight to p_2
      public void actionPerformed(ActionEvent e) {
        card.show(pane, "p2");
      }
    });
    b_3.addActionListener(new ActionListener() { //  Flip straight to p_3
      public void actionPerformed(ActionEvent e) {
        card.show(pane, "p3");
      }
    });
    this.getContentPane().add(pane);
    this.getContentPane().add(p, BorderLayout.SOUTH);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(300, 200);
    this.setVisible(true);
  }
  
  public static void main(String[] args) {
    new TestMain();
  }
  
}

Note: When using method next() or previous() graphics CARDS, all CARDS are displayed in a loop. For example, if the last card is currently displayed, then calling method next() will display the first card; If the first card is currently displayed, a call to the method previous() displays the last card.

I hope this article is helpful to you Java programming, at the same time, please continue to pay attention to this site!


Related articles: