/**
*
* 卡片布局知识点:
* 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: 38281684@qq.com
*/
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();
}
}