Swing CardLayout類

CardLayout類將容器中的每個組件排列為卡片。一次只能看到一張卡片,而容器則充當一疊卡片。

類聲明

以下是java.awt.CardLayout類的聲明 -

public class CardLayout
   extends Object
      implements LayoutManager2, Serializable

類構造函數

編號 構造函數 描述
1 CardLayout() 創建一個大小為零的新卡片佈局。
2 CardLayout(int hgap, int vgap) 創建具有指定水準和垂直間隙的新卡片佈局。

類方法

編號 構造函數 描述
1 void addLayoutComponent(Component comp, Object constraints) 將指定的組件添加到此卡片佈局的內部名稱表中。
2 void addLayoutComponent(String name, Component comp) 如果佈局管理器使用每個組件的字串,則將組件comp添加到佈局中,並將其與name指定的字串相關聯。
3 void first(Container parent) 翻轉到容器的第一張卡片。
4 int getHgap() 獲取組件之間的水準間隙。
5 float getLayoutAlignmentX(Container parent) 返回沿x軸的對齊方式。
6 float getLayoutAlignmentY(Container parent) 返回沿y軸的對齊方式。
7 int getVgap() 獲取組件之間的垂直間隙。
8 void invalidateLayout(Container target) 使佈局無效,如果佈局管理器緩存了資訊,則應將其丟棄。
9 void last(Container parent) 翻轉到容器的最後一張卡片。
10 void layoutContainer(Container parent) 使用此卡佈局佈置指定的容器。
11 Dimension maximumLayoutSize(Container target) 給定指定目標容器中的組件,返回此佈局的最大值。
12 Dimension minimumLayoutSize(Container parent) 計算指定面板的最小值。
13 void next(Container parent) 翻轉到指定容器的下一張卡片。
14 Dimension preferredLayoutSize(Container parent) 使用此卡佈局確定容器參數的首選大小。
15 void previous(Container parent) 翻轉到指定容器的上一張卡片。
16 void removeLayoutComponent(Component comp) 從佈局中刪除指定的組件。
17 void setHgap(int hgap) 設置組件之間的水準間隙。
18 void setVgap(int vgap) 設置組件之間的垂直間隙。
19 void show(Container parent, String name) 使用addLayoutComponent翻轉到使用指定名稱添加到此佈局的組件。
20 String toString() 返回此卡佈局狀態的字串表示形式。

方法繼承

該類繼承以下類中的方法 -

  • java.lang.Object

CardLayout示例

使用編輯器創建以下Java程式:CardLayoutDemo.java

package com.zaixian.layout;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class CardLayoutDemo {
    private JFrame mainFrame;
    private JLabel headerLabel;
    private JLabel statusLabel;
    private JPanel controlPanel;
    private JLabel msglabel;

    public CardLayoutDemo() {
        prepareGUI();
    }

    public static void main(String[] args) {
        CardLayoutDemo swingLayoutDemo = new CardLayoutDemo();
        swingLayoutDemo.showCardLayoutDemo();
    }

    private void prepareGUI() {
        mainFrame = new JFrame("Java SWING CardLayout示例(xuhuhu.com)");
        mainFrame.setSize(400, 400);
        mainFrame.setLayout(new GridLayout(3, 1));

        headerLabel = new JLabel("", JLabel.CENTER);
        statusLabel = new JLabel("", JLabel.CENTER);
        statusLabel.setSize(350, 100);

        mainFrame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent windowEvent) {
                System.exit(0);
            }
        });
        controlPanel = new JPanel();
        controlPanel.setLayout(new FlowLayout());

        mainFrame.add(headerLabel);
        mainFrame.add(controlPanel);
        mainFrame.add(statusLabel);
        mainFrame.setVisible(true);
    }

    private void showCardLayoutDemo() {
        headerLabel.setText("Layout in action: CardLayout");

        final JPanel panel = new JPanel();
        panel.setBackground(Color.CYAN);
        panel.setSize(300, 300);

        CardLayout layout = new CardLayout();
        layout.setHgap(10);
        layout.setVgap(10);
        panel.setLayout(layout);

        JPanel buttonPanel = new JPanel(new FlowLayout());
        buttonPanel.add(new JButton("確定"));
        buttonPanel.add(new JButton("取消"));

        JPanel textBoxPanel = new JPanel(new FlowLayout());
        textBoxPanel.add(new JLabel("姓名:"));
        textBoxPanel.add(new JTextField(20));

        panel.add("按鈕", buttonPanel);
        panel.add("文本", textBoxPanel);
        final DefaultComboBoxModel panelName = new DefaultComboBoxModel();

        panelName.addElement("按鈕");
        panelName.addElement("文本");
        final JComboBox listCombo = new JComboBox(panelName);

        listCombo.setSelectedIndex(0);
        JScrollPane listComboScrollPane = new JScrollPane(listCombo);
        JButton showButton = new JButton("顯示結果");

        showButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String data = "";
                if (listCombo.getSelectedIndex() != -1) {
                    CardLayout cardLayout = (CardLayout) (panel.getLayout());
                    cardLayout.show(panel, (String) listCombo.getItemAt(listCombo.getSelectedIndex()));
                }
                statusLabel.setText(data);
            }
        });
        controlPanel.add(listComboScrollPane);
        controlPanel.add(showButton);
        controlPanel.add(panel);
        mainFrame.setVisible(true);
    }
}

執行上面示例代碼,得到以下結果:

CardLayout示例


上一篇: Swing LayoutManager介面 下一篇: Swing Menu類