Java图形化界面设计——布局管理器之CardLayout(卡片布局)

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

 

1、  CardLayout类的常用构造函数及方法

 

 

2、  使用CardLayout类提供的方法可以切换显示该空间中的组件

 

方法一步骤:

(1)      定义使用卡片布局的容器

例如:Panel cardPanel=new Panel();

(2)      定义卡片对象:CardLayout 布局对象名称=new CardLayout();

例如:CardLayout card=new CardLayout();

(3)      设置使用卡片布局的容器为卡片布局:

格式:容器名称.setLayout(布局对象名称);

例如:cardPanel.setLayout(card);

(4)      设置容器中显示的组件

例如:for (int i = 0; i < 5; i++) {

                            cardPanel.add(newJButton("按钮"+i));

                   }

(5)      定义响应事件代码,让容器显示相应的组件

格式:

n  布局对象名称.next(容器名称)   显示容器中当前组件之后的一个组件,若当前组件为最后添加的组件,则显示第一个组件,即卡片组件显示是循环的。

n  布局对象名称.first(容器名称)   显示容器中第一个组件

n  布局对象名称.last(容器名称)   显示容器中最后一个组件

n  布局对象名称.previous(容器名称)   显示容器中当前组件之前的一个组件,若当前组件为第一个添加的组件,则显示最后一个组件,即卡片组件显示是循环的。

 

例如:

card.next(cardPanel);

card.previous(cardPanel);

         card.first(cardPanel);      

         card.last(cardPanel);      

 

实例一:卡片的切换

窗体默认边界布局,一个面板以卡片布局,面板上添加五个按钮,该面板添加到CENTER位置,另一个面板添加两个按钮,两个按钮添加事件来切换显示CENTER位置中的面板的组件

 

// cardlayout.java

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;//引入事件包

 

//定义类时实现监听接口

public class cardlayout extendsJFrame implements ActionListener{

         JButton nextbutton;

         JButton preButton;

    Panel cardPanel=new Panel();

    Panel controlpaPanel=new Panel();

         //定义卡片布局对象

    CardLayout card=new CardLayout();

         //定义构造函数

         public cardlayout() {

                   super("卡片布局管理器");

                   setSize(300, 200);

                   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                   setLocationRelativeTo(null);

                   setVisible(true);

 

                   //设置cardPanel面板对象为卡片布局

                   cardPanel.setLayout(card);    

 

                   //循环,在cardPanel面板对象中添加五个按钮

                   //因为cardPanel面板对象为卡片布局,因此只显示最先添加的组件

                   for (int i = 0; i < 5; i++) {

                            cardPanel.add(new JButton("按钮"+i));

                   }

                   //实例化按钮对象

                   nextbutton=new JButton("下一张卡片");

                   preButton=new JButton("上一张卡片");

 

                   //为按钮对象注册监听器

                   nextbutton.addActionListener(this);

                   preButton.addActionListener(this);

 

                   controlpaPanel.add(preButton);

                   controlpaPanel.add(nextbutton);

 

                   //定义容器对象为当前窗体容器对象

                   Container container=getContentPane();

 

                   //将 cardPanel面板放置在窗口边界布局的中间,窗口默认为边界布局

                   container.add(cardPanel,BorderLayout.CENTER);

                   // 将controlpaPanel面板放置在窗口边界布局的南边,

                   container.add(controlpaPanel,BorderLayout.SOUTH);

         }

 

         //实现按钮的监听触发时的处理

         public void actionPerformed(ActionEvent e){

                   //如果用户单击nextbutton,执行的语句

                   if (e.getSource()==nextbutton){

                            //切换cardPanel面板中当前组件之后的一个组件

                            //若当前组件为最后添加的组件,则显示第一个组件,即卡片组件显示是循环的。

                            card.next(cardPanel);     

                   }

                   if (e.getSource()==preButton){

                            //切换cardPanel面板中当前组件之前的一个组件

                            //若当前组件为第一个添加的组件,则显示最后一个组件,即卡片组件显示是循环的。

                            card.previous(cardPanel);

                   }

         }

         public static void main(String[] args) {

                   cardlayout kapian=new cardlayout();

                  

         }

 }

 

程序显示结果如下图所示,单击“上一张”、“下一张”等按钮可以上面的面板中显示不同的按钮来。

 

 

 

方法二步骤:

(1)      定义使用卡片布局的容器

例如:Panel cardPanel=new Panel();

(2)      定义卡片对象:CardLayout 布局对象名称=newCardLayout();

例如:CardLayout card=new CardLayout();

(3)      设置使用卡片布局的容器为卡片布局:

格式:容器名称.setLayout(卡片对象名称);

例如:cardPanel.setLayout(card);

(4)      设置容器中显示的组件,同时为组件命名对应的卡片名称

格式: 容器名称. Add(卡片名称,组件名称)

例如:for (int i = 0; i < 4; i++) {

                            cardPanel.add(“0”,newJButton("按钮"+i));

                   }

(5)      定义响应事件代码,让容器显示相应的组件

格式:卡片对象名称.show(容器名称,卡片名称)

例如:card.show(cardPanel,”0”);

 

         实例二:使用CardLayout类的show方法显示组件。

窗体默认边界布局,一个面板以卡片布局,面板上添加4个按钮,该面板添加到CENTER位置,另一个面板添加4个按钮,这4个按钮添加事件来切换显示CENTER位置中的面板的组件按钮。

 

// cardlayout1.java

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;//引入事件包

 

//定义类时 实现监听接口

public class cardlayout1 extends JFrameimplements ActionListener{

         JButton b0,b1,b2,b3;

    Panel cardPanel=new Panel();

    Panel controlpaPanel=newPanel();

         //定义卡片布局对象

    CardLayout card=newCardLayout();

         //定义字符数组,为卡片命名

         StringcardName[]={"0","1","2","3"};

         //定义构造函数

         public cardlayout1() {

                   super("卡片布局管理器");

                   setSize(400,200);

                   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                   setLocationRelativeTo(null);

                   setVisible(true);

 

                   //设置cardPanel面板对象为卡片布局

                   cardPanel.setLayout(card);    

 

                   //循环,在cardPanel面板对象中添加4个按钮

                   //因为cardPanel面板对象为卡片布局,因此初始时显示最先添加的组件

                   for (int i = 0; i< 4; i++) {

                            //面板中添加的每个按钮对应设置一个卡片名

                            cardPanel.add(cardName[i],newJButton("按钮"+i));

                   }

                   //实例化按钮对象

                   b0=newJButton("0");

                   b1=newJButton("1");

                   b2=newJButton("2");

                   b3=newJButton("3");

 

                   //为按钮对象注册监听器

                   b0.addActionListener(this);

                   b1.addActionListener(this);

                   b2.addActionListener(this);

                   b3.addActionListener(this);

 

                   controlpaPanel.add(b0);

                   controlpaPanel.add(b1);

                   controlpaPanel.add(b2);

                   controlpaPanel.add(b3);

                   //定义容器对象为当前窗体容器对象

                   Containercontainer=getContentPane();

 

                   //将 cardPanel面板放置在窗口边界布局的中间,窗口默认为边界布局

                   container.add(cardPanel,BorderLayout.CENTER);

                   // 将controlpaPanel面板放置在窗口边界布局的南边,

                   container.add(controlpaPanel,BorderLayout.SOUTH);

         }

 

         //实现按钮的监听触发时的处理

         public voidactionPerformed(ActionEvent e){

                   //用户单击b0按钮时执行的语句

                   if(e.getSource()==b0){

                            //通过show()方法中的卡片名称,显示容器中的组件。

                            card.show(cardPanel,cardName[0]);     

                   }

                   if(e.getSource()==b1){

                            card.show(cardPanel,cardName[1]);     

                   }

                   if(e.getSource()==b2){

                            card.show(cardPanel,cardName[2]);     

                   }

                   if(e.getSource()==b3){

                            card.show(cardPanel,cardName[3]);     

                   }

         }

         public static voidmain(String[] args) {

                   cardlayout1kapian=new cardlayout1();

                  

         }

 }

 

程序执行结果:


  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p style="color:#333333;"> <strong> </strong> </p> <p style="font-family:"color:#222226;font-size:14px;background-color:#FFFFFF;"> <strong><span style="color:#337FE5;">[为什么要学习Spring Cloud微服务]</span> </strong> </p> <p style="font-family:"color:#222226;font-size:14px;background-color:#FFFFFF;"> <strong><span style="color:#4D555D;"></span> </strong> </p> <p class="ql-long-24357476" style="font-family:"color:#222226;font-size:14px;background-color:#FFFFFF;"> <strong><span style="font-family:"background-color:#FFFFFF;">SpringCloud作为主流微服务框架,<span style="color:#4D555D;">已成为各互联网公司的首选框架,国内外企业占有率持续攀升,</span>是Java工程师的必备技能。</span><span style="font-family:"background-color:#FFFFFF;">就连大名鼎鼎的阿里巴巴</span><span style="font-family:"background-color:#FFFFFF;">dubbo</span><span style="font-family:"background-color:#FFFFFF;">也正式更名为</span><span style="font-family:"background-color:#FFFFFF;">Spring Cloud Alibaba</span><span style="font-family:"background-color:#FFFFFF;">,成为了</span><span style="font-family:"background-color:#FFFFFF;">Spring Cloud </span><span style="font-family:"background-color:#FFFFFF;">微服务中的一个子模块。</span><span style="font-family:"background-color:#FFFFFF;"></span><span style="font-family:"background-color:#FFFFFF;">Spring Cloud是企业架构转型、个人能力提升、架构师进阶的不二选择。</span> </strong> </p> <p style="color:#333333;"> <strong><strong><br /> </strong> </strong> </p> <strong><span style="font-family:"color:#337FE5;font-size:14px;background-color:#FFFFFF;">【推荐你学习这门课的理由】</span><br /> </strong> <p> <br /> </p> <p> <span>1、</span><span style="color:#222226;font-family:"font-size:14px;background-color:#FFFFFF;">本课程总计</span><span style="background-color:#FFFFFF;">29</span><span style="color:#222226;font-family:"font-size:14px;background-color:#FFFFFF;">课时,<span style="color:#333333;">从微服务是什么、能够做什么开始讲起,绝对的零基础入门</span></span><span></span> </p> <p> <span style="background-color:#FFFFFF;">2、<span style="color:#333333;">课程附带全部26个项目源码,230页高清PDF正版课件</span><span style="color:#333333;"></span></span> </p> <p> <span style="background-color:#FFFFFF;"><b><br /> </b></span> </p> <p> <span style="background-color:#FFFFFF;"><b><span style="color:#337FE5;">【课程知识梳理】</span></b></span> </p> <p> <span style="background-color:#FFFFFF;"><b>1、</b></span><span style="color:#333333;">先讲解了什么是单体架构、什么是微服务架构、他们间有什么区别和联系,各自有什么优缺点。</span> </p> <p> <span style="color:#333333;">2、</span><span style="color:#333333;">从本质入手,使用最简单的Spring Boot搭建微服务,让你认清微服务是一种思想和解决问题的手段,而不是新兴技术。</span> </p> <p style="color:#333333;"> 3、讲解Spring Boot 与Spring Cloud 微服务架构间的联系,原生的RestTemplate工具,以及Actuator监控端点的使用。 </p> <p style="color:#333333;"> 4、带着微服务所带来的各种优缺点,为大家引入服务发现与注册的概念和原理,从而引入我们的第一个注册中心服务Eureka。 </p> <p style="color:#333333;"> 5、引入负载均衡的理念,区分什么是服务端负载均衡,什么是客户端负载均衡,进而引入Ribbon负载均衡组件的详细使用。 </p> <p style="color:#333333;"> 6、为了解决微服务间复杂的调用,降低代码的复杂度,我们引入了Feign声明式客户端,让你几行代码搞定服务的远程调用。 </p> <p style="color:#333333;"> 7、最后为大家介绍了整个微服务体系应该包含什么,学习路线是什么,应该学习什么。 </p> <p style="color:#333333;"> <strong><br /> </strong> </p> <p style="color:#333333;"> <strong><span style="color:#337FE5;">【</span><strong><span style="color:#337FE5;">学习方法</span></strong><span style="color:#337FE5;"></span><span style="color:#337FE5;">】</span></strong> </p> <p style="color:#333333;"> 每一节课程均有代码,最好的方式是静下心来,用一天的时间,或者两个半天时间来学习。 </p> <p style="color:#333333;"> 一边听我的讲解,一边使用我提供的项目代码进行观察和运行。 </p> <p style="color:#333333;"> 只要你能跟住我的节奏,你就可以搞定微服务。 </p> <br />
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值