CardLayout(卡片布局管理器)能够帮助用户实现多个成员共享同一个显不空间,并且一次只显示一个容器组件的内容。
CardLayout 布局管理器将容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件。CardLayout 的构造方法如下:
- CardLayout():构造一个新布局,默认间隔为 0。
- CardLayout(int hgap, int vgap):创建布局管理器,并指定组件间的水平间隔(hgap)和垂直间隔(vgap)
通过这个,我们可以实现页面路由的跳转:
package com.company;
import javax.smartcardio.Card;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
public static void main(String[] args) {
JFrame jf = new JFrame("text");
jf.setSize(300,200);
JPanel jp = new JPanel(new CardLayout());//确认CardLayout布局
JPanel jp1 = new JPanel();//卡片1
JPanel jp2 = new JPanel();//卡片2
JButton jb = new JButton("开始游戏");
jp1.add(jb);
jp2.add(new JLabel("游戏开始"));
jp.add(jp1,"card1");
jp.add(jp2,"card2");
CardLayout cl = (CardLayout)(jp.getLayout());//创建一个CardLayout对象,指向jp
cl.show(jp,"card1");//调用展示jp中的一张卡片页面
jb.addActionListener(//加入监听
new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cl.show(jp,"card2");//点击切换卡片2
}
}
);
jf.add(jp);
jf.setVisible(true);
}
}
效果图:
card1:
点击按钮后跳转card2: