Java卡片布局管理器解釋及實(shí)例
由 CardLayout 類實(shí)現(xiàn)的布局管理器稱為卡片布局管理器,用來(lái)操縱其所管理容器中包含的容器或組件。每個(gè)直接添加到其所管理容器中的容器或組件為一個(gè)卡片,最先被添加的容器或組件被認(rèn)為是第一個(gè)卡片,最后被添加的則為最后一個(gè)卡片,初次運(yùn)行時(shí)將顯示第一個(gè)卡片。下面,我們就來(lái)通過(guò)一個(gè)實(shí)例看看它是怎么用的。
源碼:
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Insets;
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;
import javax.swing.UIManager;
public class TestMain extends JFrame {
private JPanel pane = null; // 主要的JPanel,該JPanel的布局管理將被設(shè)置成CardLayout
private JPanel p = null; // 放按鈕的JPanel
private CardLayout card = null; // CardLayout布局管理器
private JButton button_1 = null; // 上一步
private JButton button_2 = null; // 下一步
private JButton b_1 = null, b_2 = null, b_3 = null; // 三個(gè)可直接翻轉(zhuǎn)到JPanel組件的按鈕
private JPanel p_1 = null, p_2 = null, p_3 = null; // 要切換的三個(gè)JPanel
public TestMain() {
super("CardLayout Test");
try {
// 將LookAndFeel設(shè)置成Windows樣式
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception ex) {
ex.printStackTrace();
}
/**創(chuàng)建一個(gè)具有指定的水平和垂直間隙的新卡片布局*/
card = new CardLayout(5, 5);
pane = new JPanel(card); // JPanel的布局管理將被設(shè)置成CardLayout
p = new JPanel(); // 構(gòu)造放按鈕的JPanel
button_1 = new JButton("< 上一步");
button_2 = new JButton("下一步 >");
b_1 = new JButton("1");
b_2 = new JButton("2");
b_3 = new JButton("3");
b_1.setMargin(new Insets(2,2,2,2));
b_2.setMargin(new Insets(2,2,2,2));
b_3.setMargin(new Insets(2,2,2,2));
p.add(button_1);
p.add(b_1);
p.add(b_2);
p.add(b_3);
p.add(button_2);
p_1 = new JPanel();
p_2 = new JPanel();
p_3 = new JPanel();
p_1.setBackground(Color.RED);
p_2.setBackground(Color.BLUE);
p_3.setBackground(Color.GREEN);
p_1.add(new JLabel("JPanel_1"));
p_2.add(new JLabel("JPanel_2"));
p_3.add(new JLabel("JPanel_3"));
pane.add(p_1, "p1");
pane.add(p_2, "p2");
pane.add(p_3, "p3");
/**下面是翻轉(zhuǎn)到卡片布局的某個(gè)組件,可參考API中的文檔*/
button_1.addActionListener(new ActionListener(){ // 上一步的按鈕動(dòng)作
public void actionPerformed(ActionEvent e) {
card.previous(pane);
}
});
button_2.addActionListener(new ActionListener(){ // 下一步的按鈕動(dòng)作
public void actionPerformed(ActionEvent e) {
card.next(pane);
}
});
b_1.addActionListener(new ActionListener() { // 直接翻轉(zhuǎn)到p_1
public void actionPerformed(ActionEvent e) {
card.show(pane, "p1");
}
});
b_2.addActionListener(new ActionListener() { // 直接翻轉(zhuǎn)到p_2
public void actionPerformed(ActionEvent e) {
card.show(pane, "p2");
}
});
b_3.addActionListener(new ActionListener() { // 直接翻轉(zhuǎn)到p_3
public void actionPerformed(ActionEvent e) {
card.show(pane, "p3");
}
});
this.getContentPane().add(pane);
this.getContentPane().add(p, BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.setVisible(true);
}
public static void main(String[] args) {
new TestMain();
}
}
注意:當(dāng)利用方法 next() 或 previous() 顯示卡片時(shí),將循環(huán)顯示所有卡片。例如,如果當(dāng)前顯示的是最后一個(gè)卡片,再調(diào)用方法 next() 將顯示第一個(gè)卡片;如果當(dāng)前顯示的是第一個(gè)卡片,再調(diào)用方法 previous() 將顯示最后一個(gè)卡片。
希望本文對(duì)大家Java程序設(shè)計(jì)有所幫助,同時(shí),也請(qǐng)大家繼續(xù)關(guān)注腳本之家!
相關(guān)文章
java中基本注解的知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于java中基本注解的知識(shí)點(diǎn)總結(jié),有需要的朋友們可以跟著學(xué)習(xí)下。2021-06-06
SpringBoot快速搭建實(shí)現(xiàn)三步驟解析
這篇文章主要介紹了SpringBoot快速搭建實(shí)現(xiàn)三步驟解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
IDEA2020.1同步系統(tǒng)設(shè)置到GitHub的方法
這篇文章主要介紹了IDEA2020.1同步系統(tǒng)設(shè)置到GitHub的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
java 動(dòng)態(tài)加載的實(shí)現(xiàn)代碼
這篇文章主要介紹了java 動(dòng)態(tài)加載的實(shí)現(xiàn)代碼的相關(guān)資料,Java動(dòng)態(tài)加載類主要是為了不改變主程序代碼,通過(guò)修改配置文件就可以操作不同的對(duì)象執(zhí)行不同的功能,需要的朋友可以參考下2017-07-07
使用IDEA工具配置和運(yùn)行vue項(xiàng)目及遇到的坑
這篇文章主要介紹了使用IDEA工具配置和運(yùn)行vue項(xiàng)目及遇到的坑,需要的朋友可以參考下2018-09-09
基于jvm-sandbox的imock開(kāi)發(fā)指南詳解
這篇文章主要為大家介紹了基于jvm-sandbox的imock開(kāi)發(fā)指南詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

