Java Swing面板布局之卡片布局CardLayout

Java Swing面板布局之卡片布局CardLayout,第1张

Java Swing面板布局之卡片布局CardLayout

一、简介

卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过CardLayout类提供的方法可以切换该空间中显示的组件。

可以通过调用CardLayout的next方法翻转到指定容器的下一张卡片,如果当前的可见卡片是最后一个,则翻转到布局的第一张卡片。同样也可以使用previous方法翻转到指定容器的前一张卡片。除了这两个方法,还有last、first方法可以翻转到最后一张、第一张卡片,我们也可以直接使用show方法翻转到指定名称的卡片。

二、构造函数

//组件距容器左右边界和上下边界的距离为缺省值0个像素

public CardLayout();

//组件距容器左右边界和上下边界的距离为指定值

public CardLayout(int hgap, int vgap);

三、类及常用方法

//翻转到容器的第一张卡片

public void first(Container parent)

//翻转到容器的最后一张卡片

public void last(Container parent)

//翻转到容器的前一张卡片

public void previous(Container parent)

//翻转倒容器的后一张卡片

public void next(Container parent)

//显示指定名称的卡片

public void show(Container parent, String name)

public int getHgap()

public void setHgap(int hgap)

public int getVgap()

public void setVgap(int vgap)

四、举例

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;

public class CardLayout02 extends Jframe {

    private static final long serialVersionUID = 1L;

    // 主要的JPanel,该JPanel的布局管理将被设置成CardLayout

    private JPanel cardPanel = null;

    // CardLayout布局管理器

    private CardLayout card = null;   

    // 放按钮的JPanel

    private JPanel btnPanel = null;

    private JButton btn_previous = null; // 上一个

    private JButton btn_next = null; // 下一个

    private JButton b_1 = null, b_2 = null, b_3 = null; // 三个可直接翻转到JPanel组件的按钮

    private JPanel p_1 = null, p_2 = null, p_3 = null; // 要切换的三个JPanel

    public CardLayout02() {

       super("CardLayout Test");

      

       card = new CardLayout(5, 5);

       cardPanel = new JPanel(card); // JPanel的布局管理将被设置成CardLayout

       p_1 = new JPanel();

       p_2 = new JPanel();

       p_3 = new JPanel();

       p_1.setBackground(Color.RED);

       p_2.setBackground(Color.ORANGE);

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

       cardPanel.add(p_1, "p1");

       cardPanel.add(p_2, "p2");

       cardPanel.add(p_3, "p3");

       btnPanel = new JPanel(); // 构造放按钮的JPanel

       btn_previous = new JButton("< 上一个");

       btn_next = 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));

       btnPanel.add(btn_previous);

       btnPanel.add(b_1);

       btnPanel.add(b_2);

       btnPanel.add(b_3);

       btnPanel.add(btn_next);

      

       btn_previous.addActionListener(new ActionListener() { // 上一步的按钮动作

           public void actionPerformed(ActionEvent e) {

              card.previous(cardPanel);

           }

       });

       btn_next.addActionListener(new ActionListener() { // 下一步的按钮动作

           public void actionPerformed(ActionEvent e) {

              card.next(cardPanel);

           }

       });

       b_1.addActionListener(new ActionListener() { // 直接翻转到p_1

           public void actionPerformed(ActionEvent e) {

              card.show(cardPanel, "p1");

           }

       });

       b_2.addActionListener(new ActionListener() { // 直接翻转到p_2

           public void actionPerformed(ActionEvent e) {

              card.show(cardPanel, "p2");

           }

       });

       b_3.addActionListener(new ActionListener() { // 直接翻转到p_3

           public void actionPerformed(ActionEvent e) {

              card.show(cardPanel, "p3");

           }

       });

       this.getContentPane().add(cardPanel);

       this.getContentPane().add(btnPanel, BorderLayout.SOUTH);

       this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);

       this.setSize(300, 200);

       this.setVisible(true);

    }

    public static void main(String[] args) {

       new CardLayout02();

    }

}

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5709282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存