AWT CardLayout类

1 什么是Java AWT CardLayout

CardLayout类将容器中的每个组件排列为一张卡片。一次只能看到一张卡片,容器就像一叠卡片。

2 Java AWT CardLayout的语法

public class CardLayout
   extends Object
      implements LayoutManager2, Serializable

3 Java AWT CardLayout的构造方法

构造方法 描述
CardLayout() 创建一个新的卡片布局,间隙大小为零。
CardLayout(int hgap, int vgap) 创建具有指定水平和垂直间隙的新卡片布局。

4 Java AWT CardLayout的方法

方法 描述
void addLayoutComponent(Component comp, Object constraints) 将指定的组件添加到此卡片布局的内部名称表。
void addLayoutComponent(String name, Component comp) 如果布局管理器使用每个组件的字符串,则将组件组合添加到布局中,并将其与名称指定的字符串相关联。
void first(Container parent) 翻转到容器的第一张卡片。
int getHgap() 获取组件之间的水平间隙。
float getLayoutAlignmentX(Container parent) 返回沿 x 轴的对齐方式。
float getLayoutAlignmentY(Container parent) 返回沿 y 轴的对齐方式。
int getVgap() 获取组件之间的垂直间隙。
void invalidateLayout(Container target) 使布局无效,表示如果布局管理器已缓存信息,则应将其丢弃。
void last(Container parent) 翻转到容器的最后一张卡片。
void layoutContainer(Container parent) 使用此卡片布局布置指定的容器。
Dimension maximumLayoutSize(Container target) 给定指定目标容器中的组件,返回此布局的最大尺寸。
Dimension minimumLayoutSize(Container parent) 计算指定面板的最小尺寸。
void next(Container parent) 翻转到指定容器的下一张卡片。
Dimension preferredLayoutSize(Container parent) 使用此卡片布局确定容器参数的首选大小。
void previous(Container parent) 翻转到指定容器的上一张卡片。
void removeLayoutComponent(Component comp) 从布局中移除指定的组件。
void setHgap(int hgap) 设置组件之间的水平间隙。
void setVgap(int vgap) 设置组件之间的垂直间隙。
void show(Container parent, String name) 使用 addLayoutComponent 翻转到使用指定名称添加到此布局的组件。
String toString() 返回此卡片布局状态的字符串表示形式。

5 Java AWT CardLayout的例子

让我们看一个简单的Java AWT CardLayout类示例。

package com.yiidian;

import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class AwtLayoutDemo {
   private Frame mainFrame;
   private Label headerLabel;
   private Label statusLabel;
   private Panel controlPanel;
   private Label msglabel;

   public AwtLayoutDemo(){
      prepareGUI();
   }

   public static void main(String[] args){
      AwtLayoutDemo  awtLayoutDemo = new AwtLayoutDemo();  
      awtLayoutDemo.showCardLayoutDemo();       
   }
      
   private void prepareGUI(){
      mainFrame = new Frame("一点教程网:Java AWT Examples");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));
      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      });    
      headerLabel = new Label();
      headerLabel.setAlignment(Label.CENTER);
      statusLabel = new Label();        
      statusLabel.setAlignment(Label.CENTER);
      statusLabel.setSize(350,100);

      msglabel = new Label();
      msglabel.setAlignment(Label.CENTER);
      msglabel.setText("Welcome to yiidian.com AWT Tutorial.");

      controlPanel = new Panel();
      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 Panel panel = new Panel();
      panel.setBackground(Color.CYAN);
      panel.setSize(300,300);

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

      Panel buttonPanel = new Panel(new FlowLayout());

      buttonPanel.add(new Button("OK"));
      buttonPanel.add(new Button("Cancel"));    

      Panel textBoxPanel = new Panel(new FlowLayout());

      textBoxPanel.add(new Label("Name:"));
      textBoxPanel.add(new TextField(20));

      panel.add("Button", buttonPanel);
      panel.add("Text", textBoxPanel);

      Choice choice = new Choice();
      choice.add("Button");
      choice.add("Text");

      choice.addItemListener(new ItemListener() {
         public void itemStateChanged(ItemEvent e) {
            CardLayout cardLayout = (CardLayout)(panel.getLayout());
            cardLayout.show(panel, (String)e.getItem());
         }
      });
      controlPanel.add(choice);
      controlPanel.add(panel);

      mainFrame.setVisible(true);  
   }
}

输出结果为:

热门文章

优秀文章