java学习awt:布局管理器CardLayout

本文介绍如何使用 Java AWT 中的 CardLayout 布局管理器,并通过实例演示如何利用该布局管理器实现卡片式的界面切换效果。具体包括创建卡片容器、添加按钮以及实现按钮点击事件来控制卡片显示等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.CardLayout布局管理器:

将加入容器的所有组件:看成一叠卡片
所有组件:只有最上面才能看见

卡片:有顺序关系,最上局,第二层,等等
cardLayout.previous(p1)//返回卡片的前一张
cardLayout.next(p1);//
cardLayout.first(p1);//
cardLayout.last(p1);//
cardLayout.show(p1,“第三张”);//返回卡片指定一张

CardLayout cardLayout=new CardLayout();//创建CardLayout对象:布局管理器

在这里插入图片描述

2.做一个案例:5个button按钮:控制一叠卡片:决定的最上面的卡片是谁:

原理:
创建一个容器:放5个组件,
这个容器:设置为:CardLayout布局管理
再添加内容:

String[] name={"第一张","第二张","第三张","第四张","第五张"};

for(int i=0;i<5;i++)
{
    p1.add(name[i],new Button(name[i]));//可以写成 p1.add(new Button(name[i]));//先添加的为最上面,后面按顺序往下层;最上面;第二层;等等

}
sc.add(p1);

再创建一个容器:放五个按钮

Panel p2=new Panel();
Button b1=new Button("上一张");
        Button b2=new Button("下一张");
        Button b3=new Button("第一张");
        Button b4=new Button("最后一张");
        Button b5=new Button("第三张");

然后:添加监听事件:

ActionListener listener=new ActionListener() {}//创建监听对象

ActionListener listener=new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                String actioncommand=e.getActionCommand();// 获取按钮上的文字

switch (actioncommand){  

    case "上一张":        //如果按钮文字是"上一张":执行cardLayout.previous(p1);
    //cardLayout.previous(p1);返回卡片的前一张,
        cardLayout.previous(p1);
    break;
    case "下一张":
        cardLayout.next(p1);
        break;
    case "第一张":
        cardLayout.first(p1);
        break;
    case "最后一张":
        cardLayout.last(p1);
        break;
    case "第三张":
        cardLayout.show(p1,"第三张");
        break;

}


            }
        };


         b1.addActionListener(listener);
        b2.addActionListener(listener);
        b3.addActionListener(listener);
        b4.addActionListener(listener);
        b5.addActionListener(listener);

完整代码:

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

public class rtjhy {


    public static void main(String[] args) {



        Frame sc=new Frame("chokolo");

        sc.setBounds(100,100,300,300);
        Panel p1=new Panel();

     CardLayout cardLayout=new CardLayout();

p1.setLayout(cardLayout);//设置布局管理器

  String[] name={"第一张","第二张","第三张","第四张","第五张"};

for(int i=0;i<5;i++)
{
    p1.add(name[i],new Button(name[i]));//

}
sc.add(p1);



Panel p2=new Panel();
Button b1=new Button("上一张");
        Button b2=new Button("下一张");
        Button b3=new Button("第一张");
        Button b4=new Button("最后一张");
        Button b5=new Button("第三张");


        ActionListener listener=new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                String actioncommand=e.getActionCommand();//

switch (actioncommand){

    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;

}


            }
        };


         b1.addActionListener(listener);
        b2.addActionListener(listener);
        b3.addActionListener(listener);
        b4.addActionListener(listener);
        b5.addActionListener(listener);

        p2.add(b1);
        p2.add(b2);
        p2.add(b3);
        p2.add(b4);
        p2.add(b5);
sc.add(p2,BorderLayout.SOUTH); //注意:位置南边,如果:sc.add(p2);覆盖了p1的位置,p1就看不了了

sc.setVisible(true);
    }
}

2.效果图:

在这里插入图片描述
点击下一张按钮
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半浮名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值