CardLayout布局管理器

  • CardLayout(卡片布局管理器)能够帮助用户实现多个成员共享同一个显示空间,并且一次只显示一个容器组件的内容
  • CardLayout布局管理器将容器分为很多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个容器的大小

CardLayout构造方法

  • CardLayout():构造一个新布局,默认间隔为0
  • CardLayout(int hgap,int vgap):创建布局管理器,并指定组件的水平间隔(hgap)和垂直间隔(vgap)

CardLayout方法

  • void first(Container parent):显示parent容器的第一张卡片
  • void last(Container parent):显示parent容器的最后一张卡片
  • void previous(Container parent):显示parent容器的上一张卡片
  • void next(Container parent):显示parent容器的下一张卡片
  • void show(Container parent,String name):显示parent容器中名称为name的卡片,如果不存在,则不会发生任何操作
  • 卡片布局是连接的,当在最后一个面板使用next方法会返回到第一个,同理。在第一个面板使用previous会显示最后一个面板

Demo

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class DemoCardLayout {
    public static void main(String[] args) {
        JFrame jFrame = new JFrame("CardLayout窗体");
        Container container = jFrame.getContentPane();

        JButton button1 = new JButton("上一个");
        JButton button2 = new JButton("第2个");
        JButton button3 = new JButton("下一个");

        CardLayout cardLayout = new CardLayout();
        //用于显示
        JPanel jPanel = new JPanel();
        JPanel jPanelButton = new JPanel();
        //设置显示面板布局为卡片布局
        jPanel.setLayout(cardLayout);
        //设置按钮面板背景色
        jPanelButton.setBackground(Color.DARK_GRAY);
        //设置显示面板和按钮面板的布局位置
        container.add(jPanel,BorderLayout.CENTER);
        container.add(jPanelButton,BorderLayout.SOUTH);
        //把按钮组件放进 jPanelButton面板
        jPanelButton.add(button1);
        jPanelButton.add(button2);
        jPanelButton.add(button3);

        //创建用于显示的面板
        JPanel jPanel1 = new JPanel();
        JPanel jPanel2 = new JPanel();
        JPanel jPanel3 = new JPanel();
        //在每个字面板插入标签
        jPanel1.add(new JLabel("第一个card"));
        jPanel2.add(new JLabel("第二个card"));
        jPanel3.add(new JLabel("第三个card"));


        //把三个字面板组件放进显示面板
        jPanel.add(jPanel1,"1");
        jPanel.add(jPanel2,"2");
        jPanel.add(jPanel3,"3");

        //设置显示面板布局为卡片布局
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                cardLayout.previous(jPanel);
            }
        });
        button2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                cardLayout.show(jPanel,"2");
            }
        });
        button3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                cardLayout.next(jPanel);
            }
        });



        jFrame.setSize(400,400);
        jFrame.setVisible(true);
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

在这里插入图片描述
点击下一个
在这里插入图片描述
点击上一个
在这里插入图片描述
点击第2个
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐