java Swing布局管理器之CardLayout布局
CardLayout布局:CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,当然每层都可以利用Panel来实现复杂的用户界面将容器中的每个组件看作一张卡片。一次只能看到一张卡片,容器则充当卡片的堆栈。当容器第一次显示时,第一个添加到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.结果
更多推荐
所有评论(0)