转:http://blog.csdn.net/liujun13579/article/details/7773945

卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过CardLayout类提供的方法可以切换该空间中显示的组件。

1、  CardLayout类的常用构造函数及方法

2、  使用CardLayout类提供的方法可以切换显示该空间中的组件

方法一步骤:

(1)      定义使用卡片布局的容器

例如:Panel cardPanel=new Panel();

(2)      定义卡片对象:CardLayout 布局对象名称=new CardLayout();

例如:CardLayout card=new CardLayout();

(3)      设置使用卡片布局的容器为卡片布局:

格式:容器名称.setLayout(布局对象名称);

例如:cardPanel.setLayout(card);

(4)      设置容器中显示的组件

例如:for (int i = 0; i < 5; i++) {

cardPanel.add(newJButton("按钮"+i));

}

(5)      定义响应事件代码,让容器显示相应的组件

格式:

n  布局对象名称.next(容器名称)   显示容器中当前组件之后的一个组件,若当前组件为最后添加的组件,则显示第一个组件,即卡片组件显示是循环的。

n  布局对象名称.first(容器名称)   显示容器中第一个组件

n  布局对象名称.last(容器名称)   显示容器中最后一个组件

n  布局对象名称.previous(容器名称)   显示容器中当前组件之前的一个组件,若当前组件为第一个添加的组件,则显示最后一个组件,即卡片组件显示是循环的。

例如:

card.next(cardPanel);

card.previous(cardPanel);

card.first(cardPanel);

card.last(cardPanel);

实例一:卡片的切换

窗体默认边界布局,一个面板以卡片布局,面板上添加五个按钮,该面板添加到CENTER位置,另一个面板添加两个按钮,两个按钮添加事件来切换显示CENTER位置中的面板的组件

// cardlayout.java

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;//引入事件包

//定义类时实现监听接口

public class cardlayout extendsJFrame implements ActionListener{

JButton nextbutton;

JButton preButton;

Panel cardPanel=new Panel();

Panel controlpaPanel=new Panel();

//定义卡片布局对象

CardLayout card=new CardLayout();

//定义构造函数

public cardlayout() {

super("卡片布局管理器");

setSize(300, 200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLocationRelativeTo(null);

setVisible(true);

//设置cardPanel面板对象为卡片布局

cardPanel.setLayout(card);

//循环,在cardPanel面板对象中添加五个按钮

//因为cardPanel面板对象为卡片布局,因此只显示最先添加的组件

for (int i = 0; i < 5; i++) {

cardPanel.add(new JButton("按钮"+i));

}

//实例化按钮对象

nextbutton=new JButton("下一张卡片");

preButton=new JButton("上一张卡片");

//为按钮对象注册监听器

nextbutton.addActionListener(this);

preButton.addActionListener(this);

controlpaPanel.add(preButton);

controlpaPanel.add(nextbutton);

//定义容器对象为当前窗体容器对象

Container container=getContentPane();

//将 cardPanel面板放置在窗口边界布局的中间,窗口默认为边界布局

container.add(cardPanel,BorderLayout.CENTER);

// 将controlpaPanel面板放置在窗口边界布局的南边,

container.add(controlpaPanel,BorderLayout.SOUTH);

}

//实现按钮的监听触发时的处理

public void actionPerformed(ActionEvent e){

//如果用户单击nextbutton,执行的语句

if (e.getSource()==nextbutton){

//切换cardPanel面板中当前组件之后的一个组件

//若当前组件为最后添加的组件,则显示第一个组件,即卡片组件显示是循环的。

card.next(cardPanel);

}

if (e.getSource()==preButton){

//切换cardPanel面板中当前组件之前的一个组件

//若当前组件为第一个添加的组件,则显示最后一个组件,即卡片组件显示是循环的。

card.previous(cardPanel);

}

}

public static void main(String[] args) {

cardlayout kapian=new cardlayout();

}

}

程序显示结果如下图所示,单击“上一张”、“下一张”等按钮可以上面的面板中显示不同的按钮来。

方法二步骤:

(1)      定义使用卡片布局的容器

例如:Panel cardPanel=new Panel();

(2)      定义卡片对象:CardLayout 布局对象名称=newCardLayout();

例如:CardLayout card=new CardLayout();

(3)      设置使用卡片布局的容器为卡片布局:

格式:容器名称.setLayout(卡片对象名称);

例如:cardPanel.setLayout(card);

(4)      设置容器中显示的组件,同时为组件命名对应的卡片名称

格式: 容器名称. Add(卡片名称,组件名称)

例如:for (int i = 0; i < 4; i++) {

cardPanel.add(“0”,newJButton("按钮"+i));

}

(5)      定义响应事件代码,让容器显示相应的组件

格式:卡片对象名称.show(容器名称,卡片名称)

例如:card.show(cardPanel,”0”);

实例二:使用CardLayout类的show方法显示组件。

窗体默认边界布局,一个面板以卡片布局,面板上添加4个按钮,该面板添加到CENTER位置,另一个面板添加4个按钮,这4个按钮添加事件来切换显示CENTER位置中的面板的组件按钮。

// cardlayout1.java

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;//引入事件包

//定义类时 实现监听接口

public class cardlayout1extends JFrameimplements ActionListener{

JButton b0,b1,b2,b3;

Panel cardPanel=new Panel();

Panel controlpaPanel=newPanel();

//定义卡片布局对象

CardLayout card=newCardLayout();

//定义字符数组,为卡片命名

StringcardName[]={"0","1","2","3"};

//定义构造函数

public cardlayout1() {

super("卡片布局管理器");

setSize(400,200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLocationRelativeTo(null);

setVisible(true);

//设置cardPanel面板对象为卡片布局

cardPanel.setLayout(card);

//循环,在cardPanel面板对象中添加4个按钮

//因为cardPanel面板对象为卡片布局,因此初始时显示最先添加的组件

for (int i = 0; i< 4; i++) {

//面板中添加的每个按钮对应设置一个卡片名

cardPanel.add(cardName[i],newJButton("按钮"+i));

}

//实例化按钮对象

b0=newJButton("0");

b1=newJButton("1");

b2=newJButton("2");

b3=newJButton("3");

//为按钮对象注册监听器

b0.addActionListener(this);

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

controlpaPanel.add(b0);

controlpaPanel.add(b1);

controlpaPanel.add(b2);

controlpaPanel.add(b3);

//定义容器对象为当前窗体容器对象

Containercontainer=getContentPane();

//将 cardPanel面板放置在窗口边界布局的中间,窗口默认为边界布局

container.add(cardPanel,BorderLayout.CENTER);

// 将controlpaPanel面板放置在窗口边界布局的南边,

container.add(controlpaPanel,BorderLayout.SOUTH);

}

//实现按钮的监听触发时的处理

public voidactionPerformed(ActionEvent e){

//用户单击b0按钮时执行的语句

if(e.getSource()==b0){

//通过show()方法中的卡片名称,显示容器中的组件。

card.show(cardPanel,cardName[0]);

}

if(e.getSource()==b1){

card.show(cardPanel,cardName[1]);

}

if(e.getSource()==b2){

card.show(cardPanel,cardName[2]);

}

if(e.getSource()==b3){

card.show(cardPanel,cardName[3]);

}

}

public static voidmain(String[] args) {

cardlayout1kapian=new cardlayout1();

}

}

程序执行结果:

转:三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)的更多相关文章

  1. 转:三十、Java图形化界面设计——布局管理器之BorderLayout(边界布局)

    http://blog.csdn.net/liujun13579/article/details/7772215 边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH ...

  2. 三十、Java图形化界面设计——布局管理器之BorderLayout(边界布局)

    边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次相应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENT ...

  3. 三十三、Java图形化界面设计——布局管理器之null布局(空布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有 ...

  4. 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...

  5. 转:三十三、Java图形化界面设计——布局管理器之null布局(空布局)——即SWT中的绝对布局

    http://blog.csdn.net/liujun13579/article/details/7774267    一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到 ...

  6. 转:三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

    http://blog.csdn.net/liujun13579/article/details/7772491 网格布局特点: l  使容器中的各组件呈M行×N列的网格状分布. l  网格每列宽度相 ...

  7. 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...

  8. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

  9. 二十七、Java图形化界面设计——容器(JFrame)

    摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...

  10. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

随机推荐

  1. ACM——A + B Problem (4)

    A + B Problem (4) 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:2496            测试通过:124 ...

  2. ORACLE 数据库用户备份及表备份

      表备份模式备份:exp system/pwd@127.0.0.1:1521/db owner=(user) file=E:\DB\db20150326.dmp  tables=(table);还原 ...

  3. c#安全性、稳定性、高性能需要注重的点

    1.弱事件 2.类型安全(包括类型转换时可能的异常) 3.线程安全 5.装箱和拆箱 6.闭包传递局部变量时可能遇到的问题. 7.用于dictionary的键,要同时实现GetHashCode和Equa ...

  4. java之sleep、wait、yield、join、notify乱解

    ① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类. sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是 ...

  5. 第3章 Struts2框架--2、完整的Struts2框架应用实例

    1.建立一个Dynamic Web project,项目名:UserManager,把Struts2所必需的JAR复制到项目WEB-INF/lib目录下 2.修改web.xml文件,在web.xml文 ...

  6. 2014年9月21日_随笔,jdic,ETL,groovy,Nutz好多东西想学

    (1)老妈十一要回老家,才突然发现买票好难啊.有亲朋很重要 (2)这周我做了什么.jdic,ETL,groovy, Nutz好多东西想学. Nutz开发成员专访.Nutz优酷视频(演讲).Nutz 入 ...

  7. ORACLE数据库闪回日志写满

    网站页面无法显示完整.检查web服务是正常的,所以可能是ORACLE数据库出了问题. 首先检查闪回日志写满 然后检查归档日志文件写满的缘故了.使用以下几个命令可以看出当前归档日志文件的使用情况: se ...

  8. CentOS 6.4 64位 安装 jdk 6u45

    准备: 1.下载历史版本jdk 地址: http://java.sun.com/products/archive/ 下载的版本 jdk-6u45-linux-x64-rpm.bin  Linux x6 ...

  9. 多核处理器基础SMP&AMP&BMP

    多核处理器也称片上多核处理器(Chip Multi-Processor,CMP). 1.多核处理器的流行 多核出现前,商业化处理器都致力于单核处理器的发展,其性能已经发挥到极致,仅仅提高单核芯片的速度 ...

  10. PL/SQL学习(六)触发器

    原文参考:http://plsql-tutorial.com/ 创建语法: CREATE [OR REPLACE ] TRIGGER trigger_name {BEFORE | AFTER | IN ...