Java AWT编程 布局管理器(五)CardLayout

CardLayout布局管理器以时间而非空间来管理它的里面的组件,它将加入容器的所有组件看成一叠卡片,每次只有最上面的那个Component才看见。就好像一副扑克牌,每次只有最上面的一张扑克牌才可见。

CardLayout提供了以下两个构造器:

(1)CardLayout():创建默认的CardLayout布局管理器

(2)CardLayout(int hgap, vgap):通过置顶卡片与容器左右边界的间距(hgap)、上下边界(vgap)的间距来创建CardLayout布局管理器。

CardLayout用于控制组件可见的5个常用方法:

(1)first(Container target):显示target容器中的第一张卡片

(2)last(Container target):显示target容器中的最后一张卡片

(3)previous(Container target):显示target容器中的前一张卡片

(4)next(Container target):显示target容器中的后一张卡片

(5)show(Container target, String name):显示target容器中指定名字的卡片

package codes11;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class CardLayoutTest {
	Frame f = new Frame("测试窗口");
	String[] names = { "第一张", "第二张", "第三张", "第四张", "第五张" };
	Panel p1 = new Panel();

	public void init() {
		final CardLayout c = new CardLayout();
		p1.setLayout(c);
		for (int i = 0; i < names.length; i++) {
			p1.add(names[i], new Button(names[i]));
		}
		Panel p = new Panel();

		// 控制显示上一张的按钮
		Button previous = new Button("上一张");
		previous.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				c.previous(p1);
			}
		});

		// 控制显示下一张的按钮
		Button next = new Button("下一张");
		next.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				c.next(p1);
			}
		});

		// 控制显示第一张的按钮
		Button first = new Button("第一张");
		first.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				c.first(p1);
			}
		});

		// 控制显示最后一张的按钮
		Button last = new Button("最后一张");
		last.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				c.last(p1);
			}
		});

		// 控制根据Card显示的按钮
		Button third = new Button("第三张");
		third.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				c.show(p1, "第三张");
			}
		});

		p.add(previous);
		p.add(next);
		p.add(first);
		p.add(last);
		p.add(third);
		f.add(p1);
		f.add(p, BorderLayout.SOUTH);

		f.pack();
		f.setVisible(true);
	}

	public static void main(String[] args) {
		new CardLayoutTest().init();
	}

}
运行程序,结果如下图:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值