Java布局管理—卡片布局(CardLayout)

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

构造方法:

方法 说明
public CardLayout() 创建一个间距大小为0的新卡片布局
public CardLayout(int hgap,int vgap) 创建一个具有指定水平间距和垂直间距的新卡片布局。水平间距置于左右边缘。垂直间距置于上下边缘
public void first(Container parent) 翻转到容器的第一张卡片
public void last(Contain parent) 翻转到容器的最后一张卡片
public void next(Contain parent) 翻转到指定容器的下一张卡片

public void previous(Contain

parent)

翻转到指定容器的前一张卡片
public void show(Contain parent,String name) 翻转到使用addLayoutComponent添加到此布局的具有指定name的组件

具体常用的几个介绍:

(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方法显示组件。

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

先看程序执行结果:

Java布局管理—卡片布局(CardLayout)_第1张图片

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

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

public class CardLayoutDemo2 extends JFrame implements ActionListener{

	private JButton b0,b1,b2,b3;
	private Panel cardPanel = new Panel();
	private Panel controlpaPanel = new Panel();
	
	//定义卡片布局对象
	CardLayout card = new CardLayout();
    //定义字符数组,为卡片命名
    String cardName[]={"0","1","2","3"};
	
	//定义构造函数
	public CardLayoutDemo2() {
	
		super("卡片布局管理器");
		setSize(400, 300);
		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],new JButton("按钮"+i));
		}
		
		//实例化按钮对象
		 b0=new JButton("0");
         b1=new JButton("1");
         b2=new JButton("2");
         b3=new JButton("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);
	    
	    //定义容器对象为当前窗体容器对象
	    Container container = getContentPane();
	    
	     //将 cardPanel面板放置在窗口边界布局的中间,窗口默认为边界布局
	    container.add(cardPanel, BorderLayout.CENTER);
	    // 将controlpaPanel面板放置在窗口边界布局的南边,
	    container.add(controlpaPanel, BorderLayout.NORTH);
		
	    
	  // b0.setOpaque(false);
	}
	
	//实现按钮的监听触发时的处理
	@Override
	public void actionPerformed(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 void main(String[] args) {
		
		CardLayoutDemo2 kapian = new CardLayoutDemo2();
	}

}


 

你可能感兴趣的:(Java布局管理—卡片布局(CardLayout))