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 程式,例如在 D:/ > SWING > com > tutorialspoint > gui > 中。

SwingLayoutDemo.java

package com.tutorialspoint.gui;

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

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

   public SwingLayoutDemo(){
      prepareGUI();
   }
   public static void main(String[] args){
      SwingLayoutDemo swingLayoutDemo = new SwingLayoutDemo();  
      swingLayoutDemo.showCardLayoutDemo();       
   }
   private void prepareGUI(){
      mainFrame = new JFrame("Java SWING Examples");
      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("OK"));
      buttonPanel.add(new JButton("Cancel"));    

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

      panel.add("Button", buttonPanel);
      panel.add("Text", textBoxPanel);
      final DefaultComboBoxModel panelName = new DefaultComboBoxModel();

      panelName.addElement("Button");
      panelName.addElement("Text");
      final JComboBox listCombo = new JComboBox(panelName);    
      
      listCombo.setSelectedIndex(0);
      JScrollPane listComboScrollPane = new JScrollPane(listCombo);    
      JButton showButton = new JButton("Show");

      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);  
   }
}

使用命令提示符編譯程式。轉到 D:/ > SWING 並鍵入以下命令。

D:\SWING>javac com\tutorialspoint\gui\SwingLayoutDemo.java

如果未出現錯誤,則表示編譯成功。使用以下命令執行程式。

D:\SWING>java com.tutorialspoint.gui.SwingLayoutDemo

驗證以下輸出。

SWING  CardLayout
swing_layouts.htm
廣告