天天看点

布局管理器之卡片布局_基础操作_CardLayout

/**
 * 
 * 卡片布局知识点: 
 * 1.卡片布局简单理解成,几张扑克牌堆叠在一起,默认显示最先存放的! 
 * 2.卡片布局还有其他的有参构造函数!
 * 3.卡片布局与其他布局稍微有所不同,需要调用这个布局对象进行互动! 

 * 步骤: 
 * 1.设置主窗体为网格布局,上下分开,其实用边界布局也可以的!
 * 2.创建两个面板jpA,jpB 
 * 3.一个放主窗体上面jpA,一个放主窗体下面jpB
 * 4.创建一个卡片布局对象CardLayout()使用空参即可,下一节使用带参的! 
 * 5.jpA布局设置成卡边布局用来放显示内容的,
 * 6.jpB设置成流式即可放按钮的! 
 * 7.对按钮进行活动侦听,然后做(布局对象驱动jpA的动作)
 */
           
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
 * @version 2019年4月7日 上午2:15:48
 * @author DuJiangWei
 * @Email: [email protected]
 */
public class MyCard extends JFrame implements ActionListener {
	private static final long serialVersionUID = 1L;
	// 1.主窗体里的,上下两个面板
	private JPanel jpA, jpB;
	// 2.下面板内容:按钮两个即可!
	private JButton b1, b2;
	// 3.卡边布局对象一个,用来驱动上面板的,简单理解成:按钮-->卡片布局对象-->上面板
	private CardLayout card;
	// 4.创建一个对象用来判断;
	private Object obj = null;

	// 构造函数,设置主窗体一些基本属性!
	MyCard() {
		this.setTitle("卡片布局基础操作演示");// 标题
		this.setBounds(300, 300, 300, 400);// 坐标以及宽高!
		this.setLayout(new GridLayout(2, 1));// 设置主窗体为网格布局上下各一个
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);// 允许关闭
		init();// 初始化组件
		this.setVisible(true);// 显示
	}
	// 初始化组件
	private void init() {
		// 1.卡片布局对象
		card = new CardLayout();
		// 2.创建上面板,并关联布局对象!
		jpA = new JPanel(card);
		jpA.setBackground(new Color(145, 145, 145));
		// 3.创建下面板
		jpB = new JPanel();
		
		// 4.初始化两个按钮,并附加活动侦听!
		b1 = new JButton("下一个");
		b2 = new JButton("上一个");
		b1.addActionListener(this);
		b2.addActionListener(this);
		
		// 5.上面板装4个Jable且JLabel内容居中显示!
		for (int i = 1; i < 5; i++) {
			jpA.add(new JLabel("这里是被操控的内容__" + i, JLabel.CENTER));
		}
		// 6.下面板装按钮
		jpB.add(b1);
		jpB.add(b2);
		// 7.主窗体装入两个面板!
		this.add(jpA);
		this.add(jpB);
	}
	// 动作
	@Override
	public void actionPerformed(ActionEvent e) {
		// 获取当前活动的组件!
		obj = e.getSource();

		// 如果是按钮下一个
		if (obj.equals(b1)) {
			// 布局对象,调用next方法驱动上面板,让其内容显示下一个!
			card.next(jpA);
		//否则意思同上,取反,即:上一个!
		} else if (obj.equals(b2)) {
			card.previous(jpA);
		} else {
			return;
		}
	}
	public static void main(String[] args) {
		new MyCard();
	}
}
           
布局管理器之卡片布局_基础操作_CardLayout