java Swing布局管理器之CardLayout布局

CardLayout布局:
CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,当然每层都可以利用Panel来实现复杂的用户界面

将容器中的每个组件看作一张卡片。一次只能看到一张卡片,容器则充当卡片的堆栈。当容器第一次显示时,第一个添加到CardLayout 对象的组件为可见组件。

卡片的顺序由组件对象本身在容器内部的顺序决定。CardLayout 定义了一组方法,这些方法允许应用程序按顺序地浏览这些卡片,或者显示指定的卡片。addLayoutComponent(java.awt.Component, java.lang.Object) 方法可用于将一个字符串标识符与给定卡片关联,以便进行快速随机访问。


1.构造函数

CardLayout():创建一个间距大小为 0 的新卡片布局。

CardLayout(int hgap, int vgap):创建一个具有指定水平间距和垂直间距的新卡片布局。

2.常用方法

addLayoutComponent(Component comp, Object constraints): 将指定的组件添加到此卡片布局的内部名称表。

first(Container parent):翻转到容器的第一张卡片。

getHgap(): 获取组件之间的水平间距。

getLayoutAlignmentX(Container parent):返回沿 x 轴的对齐方式。

getLayoutAlignmentY(Container parent):返回沿 y 轴的对齐方式。

getVgap():获取组件之间的垂直间距。

last(Container parent):翻转到容器的最后一张卡片。

3.实例

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;

import javax.swing.JFrame;

public class Calculator {
	JFrame f;
	Panel p1;
	Panel p2;
	String[] name = { "1", "2", "3", "4", "5" };
	CardLayout c;

	public void init() {
		f = new JFrame("CardLayout实例");
		p1 = new Panel();
		p2 = new Panel();
		c = new CardLayout();

		p1.setLayout(c);
		for (int i = 0; i < name.length; i++) {
			p1.add(name[i], new Button(name[i]));
		}

		// 控制显示上一张的按钮
		Button previous = new Button("上一张");
		previous.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				c.previous(p1);
			}
		});
		// 控制显示下一张的按钮
		Button next = new Button("下一张");
		next.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				c.next(p1);
			}
		});
		// 控制显示第一张的按钮
		Button first = new Button("第一张");
		first.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				c.first(p1);
			}
		});
		// 控制显示最后一张的按钮
		Button last = new Button("最后一张");
		last.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				c.last(p1);
			}
		});
		// 根据card名显示的按钮
		Button third = new Button("第三张");
		third.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				c.show(p1, "3");
			}
		});
		p2.add(previous);
		p2.add(next);
		p2.add(first);
		p2.add(last);
		p2.add(third);
		f.add(p1);// 默认添加到中间
		f.add(p2, BorderLayout.SOUTH);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.pack();
		f.setVisible(true);
	}

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

4.结果



  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值