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.效果图:
点击下一张按钮