建立一个窗体对象,该窗体对象当中添加两个面板容器对象。一个面板容器对象设置为卡片布局管理器,另一个面板容器对象设置为流式布局管理。在卡片布局管理当中添加四个卡片标签对象,在流式布局管理当中添加四个按钮。然后为按钮对象添加监听器对象,使得在点击按钮时,触发特定的事件来对卡片容器对象当中的标签组件进行显示操作.
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CardLayoutDemo {
public static void main(String[] args) {
CardLayoutClass cardLayoutClass=new CardLayoutClass("卡片布局管理器");
}
}
//建立一个窗体类该窗体对象采用卡片布局的方式
class CardLayoutClass extends Frame{
private Panel card_panel=null;//声明一个卡片面板变量
private Panel control_panel=null;//声明一个控制面板对象变量
private CardLayout cardLayout=null;//声明一个卡片布局管理器对象变量
private FlowLayout flowLayout=null;//声明一个流式布局管理器对象变量
private TextField textField=null;//声明一个文本框类型的控件
private Label label1,label2,label3,label4;//声明四个标签对象变量
private Button button_first,button_next,button_previous,button_last;
CardLayoutClass(String title)
{
super(title);
init();
registerListener();
}
public void init()
{
this.setBounds(200, 100, 300, 300);//设立当前窗体框架对象的大小和边界
this.setBackground(Color.green);
//对面板对象和布局管理器对象进行初始化操作
card_panel=new Panel();
control_panel=new Panel();
card_panel.setBackground(Color.LIGHT_GRAY);
control_panel.setBackground(Color.yellow);
cardLayout=new CardLayout();
flowLayout=new FlowLayout();
card_panel.setLayout(cardLayout);//在卡片面板对象当中设置器布局管理器的类型为卡片布局管理器类型
control_panel.setLayout(flowLayout);//在控制面板对象当中设置布局管理器对象为流式布局管理器类型
//创建标签对象和文本编辑框组件对象
label1=new Label("第一页内容",Label.CENTER);//设置标签对象当中的内容居中进行显示
label2=new Label("第二页内容",Label.CENTER);
label3=new Label("第三页内容",Label.CENTER);
label4=new Label("第四页内容",Label.CENTER);
textField=new TextField();//实例化一个编辑文本框对象
//将标签对象和文本编辑框对象都添加到卡片面板对象当中去
card_panel.add(label1);
card_panel.add(label2);
card_panel.add(textField);
card_panel.add(label3);
card_panel.add(label4);
//对按钮对象进行初始化操作
button_first=new Button("第一张");
button_next=new Button("下一张");
button_previous=new Button("上一张");
button_last=new Button("最后一张");
//将按钮对象添加到控制面板对象当中去
control_panel.add(button_first);
control_panel.add(button_next);
control_panel.add(button_previous);
control_panel.add(button_last);
//在窗体对象当中所默认的布局管理器的类型为边界布局管理器类型
this.add(card_panel, BorderLayout.CENTER);//将卡片面板对象放入到中心位置处
this.add(control_panel, BorderLayout.SOUTH);//将控制面板对象放到南边位置
this.setVisible(true);//设置当前窗体对象当中的组件是可见的
}
//产生一个事件监听器对象,然后为组件对象当中的四个按钮注册同一个事件监听器对象
private void registerListener()
{
ButtonListener buttonListener=new ButtonListener();//实例化一个事件监听器对象类,该监听对象用于对行为进行监听操作
//为当前面板容器对象当中的四个按钮添加事件监听器对象,当点击按钮时将会触发事件监听器对象当中所指定的方法
button_first.addActionListener(buttonListener);
button_last.addActionListener(buttonListener);
button_next.addActionListener(buttonListener);
button_previous.addActionListener(buttonListener);
}
//进行内部类的建立操作
//建立一个事件监听器类
class ButtonListener implements ActionListener
{//建立一个按钮监听器对象,该对象实现了实现了时间监听器接口
@Override
public void actionPerformed(ActionEvent e) {
//当事件监听器类对象被触发时,将会自动执行该类方法,ActionEvent为所触发的具体的事件
System.out.println("command="+e.getActionCommand());//显示执行当前事件的行为指令
System.out.println("source="+e.getSource());//获取事件源对象当中的信息并进行输出操作
Object obj=e.getSource();//获取当前事件的事件源对象,即按钮对象
if(obj==button_first)
{//当当前的事件源对象为第一个事件源对象时
cardLayout.first(card_panel);//从卡片布局管理器对象当中取出第一张卡片进行显示操作
}
if(obj==button_previous)
{//当当前的事件源对象为button_privious事件源对象时
cardLayout.previous(card_panel);//从卡片面板对象当中将当前卡片的前一张卡片取出来进行显示
}
if(obj==button_next)
{
cardLayout.next(card_panel);//将当前卡片对象当中的后一张卡片取出来进行显示操作
}
if(obj==button_last)
{
cardLayout.last(card_panel);//将卡片面板对象当中的最后一张卡片对象取出来进行显示操作
}
}
}
}
运行效果: