參考資料:xietansheng-JavaSwing圖形界面開發
1. 概述
官方JavaDocsApi: javax.swing.CardLayout
CardLayout
,卡片布局管理器。它将容器中的每個元件看作一張卡片,一次隻能看到一張卡片,容器則充當卡片的堆棧,預設顯示第一張卡片。
CardLayout 構造方法:
// 建立一個間距大小為 0 的卡片布局
CardLayout()
// 建立一個指定水準/垂直間距大小的卡片布局。
CardLayout(int hgap, int vgap)
CardLayout 常用方法:
// 顯示第一張卡片
void first(Container parent);
// 顯示最後一張卡片
void last(Container parent);
// 顯示下一張卡片(自動循環顯示)
void next(Container parent);
// 顯示上一張卡片(自動循環顯示)
void previous(Container parent);
// 顯示指定名稱的元件(添加元件到容器時,可同時添加元件的名稱)
void show(Container parent, String name);
2. 代碼執行個體
package com.he.swing1;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @description: JavaSwing_6_CardLayout 卡片布局
* @author: ShouSi
* @createDate: 2021/11/1
*/
public class JavaSwing_6_CardLayout {
public static void main(String[] args) {
JFrame jf = new JFrame("測試視窗");
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jf.setSize(300, 200);
// 建立卡片布局,卡片間水準和豎直間隔為 10
final CardLayout layout = new CardLayout(10, 10);
// 建立内容面闆容器,指定布局管理器
final JPanel panel = new JPanel(layout);
JButton btn01 = new JButton("Button01");
JButton btn02 = new JButton("Button02");
JButton btn03 = new JButton("Button03");
panel.add(btn01, "btn01");
panel.add(btn02, "btn02");
panel.add(btn03, "btn03");
// 先顯示第二個
layout.show(panel, "btn02");
jf.setContentPane(panel);
jf.setLocationRelativeTo(null);
jf.setVisible(true);
// 每間隔2秒切換顯示下一個
new Timer(2000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
layout.next(panel);
}
}).start();
}
}