CardLayout(卡片布局管理器)能够帮助用户实现多个成员共享同一个显不空间,并且一次只显示一个容器组件的内容。
代码如下
package cn.com.planet;
import java.awt.CardLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class CardLayOut {
/*author:命运的信徒
* date:2019/1/17
* arm:swing的卡片布局管理器
*/
/*什么是卡片布局管理器?
* 简单的来说,就是把窗体分多个层,每层占据一个窗体的大小;一次只能显示一个层,其他层就是被隐藏的状态
* 大打个比方,一个本子,每页纸都一样大小,同样的位置,但是只能看一页的内容
*
*/
private static void setLay(){
//设置窗体大小和标题
JFrame jf=new JFrame("卡片管布局管理器");
jf.setSize(300, 300);
//创建两个面板就是两层
JPanel jp1=new JPanel();
//第一层包括三个按钮
JButton jb1=new JButton("登录按钮");
JButton jb2=new JButton("注册按钮");
JButton jb3=new JButton("找回密码按钮");
jp1.add(jb1);
jp1.add(jb2);
jp1.add(jb3);
//第二层包括三个文本框
JPanel jp2=new JPanel();
JTextField jtf1=new JTextField("用户名文本框");
JPasswordField jtf2=new JPasswordField("密码文本框");
JTextField jtf3=new JTextField("手机号码文本框");
jp2.add(jtf1);
jp2.add(jtf2);
jp2.add(jtf3);
//初始化布局方式
CardLayout card=new CardLayout();
//创建一个面板,设置这个面板的布局方式为卡片式布局
JPanel jp3=new JPanel(card);
//这个面板包括面板1面板2,并且给这两个面板命名,区分
jp3.add(jp1,"card1");
jp3.add(jp2,"card2");
//卡片布局显示(卡片布局的面板名称,要显示面板的名称)
card.show(jp3, "card1");
//窗体添加卡片布局管理的面板;
jf.add(jp3);
//设置关闭窗体就是关闭程序
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置可见
jf.pack();
jf.setVisible(true);
}
public static void main(String[] args) {
setLay();
}
}
效果如下
如果把如上代码
//卡片布局显示(卡片布局的面板名称,要显示面板的名称)
card.show(jp3, "card1");
改成
//卡片布局显示(卡片布局的面板名称,要显示面板的名称)
card.show(jp3, "card2");
那么效果就是如下