CardLayout布局
CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,当然每层都可以利用Panel来实现复杂的用户界面。此类布局在处理容器内的组件时,就像一副扑克牌堆栈方式一样,且可以向前翻阅组件,也可以向后翻阅组件。
CardLayout 类的常用声明方式如下:
1. setLayout(new CardLayout())
2.setLayout(new CardLayout(int h,int v))
此类中常用的方法有:
1.first(Container parent),显示第一张卡片。
2.last(Container parent),显示最后一张卡片。
3.next(Container parent),显示下一张卡片。
4.previous(Container parent),显示前一张卡片。
5.show(Container parent,Stirng name),显示指定名称的卡片。
CardLayout布局管理器应用
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestCardLayout implements ActionListener {
private Panel p1, p2, p3;
private Button b1, b2, b3;
private Frame f;
CardLayout c1 = new CardLayout();
public void create() {
b1 = new Button("第一个");
b2 = new Button("第二个");
b3 = new Button("第三个");
p1 = new Panel();
p1.setBackground(Color.BLUE);
p2 = new Panel();
p2.setBackground(Color.RED);
p3 = new Panel();
p3.setBackground(Color.GREEN);
f = new Frame("Test CardLayout");
p1.add(b1);
b1.addActionListener(this);
p2.add(b2);
b2.addActionListener(this);
p3.add(b3);
b3.addActionListener(this);
f.setLayout(c1);
f.add(p1, "第一层");
f.add(p2, "第二层");
f.add(p3, "第三层");
f.setSize(300, 200);
f.addWindowListener(new WindowAdapter() {
@Override // 为Frame窗体增加关闭功能
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
f.setVisible(true);
}
public static void main(String args[]) {
TestCardLayout tc = new TestCardLayout();
tc.create();
}
public void actionPerformed(ActionEvent e) {
c1.next(f);
}
}


即在运行过程中,用户单击“第一个”按钮时,将出现第二个面板中“第二个”的按钮,单击“第二个”按钮时,将出现第三个面板中“第三个”的按钮,单击“第三个”按钮时,将会回到“第一个”按钮所在的面板。