CardLayout布局管理器和事件监听器实现多页面跳转(Java)

效果图

 代码实现

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

//CardLayout布局管理器
public class CardLayoutDemo {
    public static void main(String[] args) {
        JFrame jframe = new JFrame();

        //创建容器1存储多个卡片
        JPanel p1 = new JPanel();

        //创建CardLayout布局管理器,并放入容器1中
        CardLayout cardlayout = new CardLayout();
        p1.setLayout(cardlayout);

        //往容器1中存储多个组件,即卡片
        String[] names = {"第一张卡片","第二张卡片","第三张卡片","第四张卡片","第五张卡片"};//初始化卡片
        for(int i = 0; i < names.length; i++){
            //将卡片添加到容器1中,卡片即名字和按钮
            p1.add(names[i],new JButton(names[i]));
        }

        //将容器1放入JFrame中
        jframe.add(p1);

        //创建容器2存储多个按钮组件
        JPanel p2 = new JPanel();

        //创建5个按钮组件
        JButton bt1 = new JButton("上一张");
        JButton bt2 = new JButton("下一张");
        JButton bt3 = new JButton("首张");
        JButton bt4 = new JButton("尾张");
        JButton bt5 = new JButton("第三张");

        //创建一个事件监听器,监听按钮的点击动作
        ActionListener listener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {//匿名内部类
                //获取参数的信息,即卡片信息
                String card = e.getActionCommand();
                switch (card) {
                    case "上一张":
                        cardlayout.previous(p1);
                        break;
                    case "下一张":
                        cardlayout.next(p1);
                        break;
                    case "首张":
                        cardlayout.first(p1);
                        break;
                    case "尾张":
                        cardlayout.last(p1);
                        break;
                    case "第三张":
                        cardlayout.show(p1, "第三张卡片");
                        break;
                }
            }
        };//匿名内部类实现,也可单独放到一个类中去构建事件监听器

        //将当前事件监听器和5个JButton按钮组件绑定一起实现同步
        bt1.addActionListener(listener);
        bt2.addActionListener(listener);
        bt3.addActionListener(listener);
        bt4.addActionListener(listener);
        bt5.addActionListener(listener);

        //将按钮组件放到容器2中
        p2.add(bt1);
        p2.add(bt2);
        p2.add(bt3);
        p2.add(bt4);
        p2.add(bt5);

        //将容器2放在JFrame的南侧区域
        jframe.add(p2,BorderLayout.SOUTH);//南部

        //JFrame窗口大小为添加组件后的最佳大小
        jframe.pack();

        //设置窗口显示
        jframe.setVisible(true);

        //点击右上角的X暂停JVM虚拟机运行
        jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_54702911/article/details/121723540
今日推荐