📜  Java AWT |卡片布局类(1)

📅  最后修改于: 2023-12-03 15:01:28.625000             🧑  作者: Mango

Java AWT | 卡片布局类

Java AWT(Abstract Window Toolkit)是Java实现的GUI工具包,它提供了一组用于创建桌面应用程序的Java类和接口。在Java AWT中,卡片布局类(CardLayout)是一种常用的布局方式,可以用来实现页面切换效果,例如实现多个视图之间的切换。

卡片布局类概述

CardLayout类是Java AWT中的布局管理器之一。它可以让我们在一个容器中显示多个组件,并且在运行时可以动态地切换它们的可见性。在CardLayout布局中,每个组件都被放置在叠加的位置上,只有当前可见的组件才会显示出来。使用CardLayout可以轻松地实现类似轮播图或者引导页的效果。

卡片布局类常用方法
  • void addLayoutComponent(Component comp, Object constraints):将指定的组件添加到此布局并设置该组件的约束条件。
  • void first(Container parent):将面板容器中的第一个组件显示出来。
  • void last(Container parent):将面板容器中的最后一个组件显示出来。
  • void next(Container parent):将面板容器中下一个组件显示出来。
  • void previous(Container parent):将面板容器中上一个组件显示出来。
  • void show(Container parent, String name):显示指定组件名的面板。
实例演示

下面是一个使用CardLayout实现页面切换效果的示例:

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

public class CardLayoutDemo extends JFrame implements ActionListener {
    JPanel cards;
    final static String BUTTONPANEL = "Button Panel";
    final static String TEXTPANEL = "Text Panel";

    public CardLayoutDemo() {
        // 创建两个面板,一个用于显示按钮,一个用于显示文本
        JPanel card1 = new JPanel();
        JPanel card2 = new JPanel();
        JButton btn1 = new JButton("Button 1");
        JButton btn2 = new JButton("Button 2");
        card1.add(btn1);
        card2.add(btn2);

        // 使用CardLayout来管理这两个面板
        cards = new JPanel(new CardLayout());
        cards.add(card1, BUTTONPANEL);
        cards.add(card2, TEXTPANEL);

        // 添加构建的面板到窗口中
        add(cards, BorderLayout.CENTER);

        // 添加事件处理
        btn1.addActionListener(this);
        btn2.addActionListener(this);
    }
  
    public void actionPerformed(ActionEvent e) {
        CardLayout cardLayout = (CardLayout) (cards.getLayout());
        if (e.getActionCommand().equals("Button 1")) {
            cardLayout.show(cards, BUTTONPANEL);
        } else if (e.getActionCommand().equals("Button 2")) {
            cardLayout.show(cards, TEXTPANEL);
        }
    }

    public static void main(String[] args) {
        CardLayoutDemo frame = new CardLayoutDemo();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}
总结

CardLayout是一种非常实用的布局方式,它可以让我们方便地实现页面切换效果。在使用时,我们需要首先创建一个CardLayout对象,并将需要切换的组件添加到一个面板中,最后通过调用show方法来显示指定的组件。