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

您所在的位置:网站首页 服务卡片怎么设置大小模式的切换 Java Swing面板布局之卡片布局CardLayout

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

2024-07-12 20:15:00| 来源: 网络整理| 查看: 265

一、简介

卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过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);

       /** 下面是翻转到卡片布局的某个组件,可参考API中的文档 */

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

    }

}

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭