zoukankan      html  css  js  c++  java
  • java中CardLayout的使用方法

    
    
    import javax.swing.*;
    
    import java.awt.*;
    import java.awt.event.*;
    
    public class Card extends JFrame{
        /*
         * JFrame的布局管理器是BorderLayout
         */
        JPanel p;//位于中心区域的面板
        JButton b1,b2,b3,b4;//位于南部区域的四个按钮
        JLabel l1,l2,l3,l4;
        CardLayout c;//设置面板p的布局
        
        Card(String name)
        {
            super(name);
            this.setVisible(true);
            this.setBounds(400,300,400,400);
            
            p = new JPanel();//实例化p
            c = new CardLayout();//实例化c
            p.setLayout(c);//设置面板p的布局为c,等价于p = new JPanel(c);
            
            //实例化4个按钮和标签
            b1 = new JButton("previous");
            b2 = new JButton("two");
            b3 = new JButton("three");
            b4 = new JButton("next");
            l1 = new JLabel("first card");
            l2 = new JLabel("second card");
            l3 = new JLabel("thirth card");
            l4 = new JLabel("fourth card");
            
            //实例化4个子面板并设定相应背景颜色
            JPanel p1 = new JPanel();
            JPanel p2 = new JPanel();
            JPanel p3 = new JPanel();
            JPanel p4 = new JPanel();        
            p1.setBackground(Color.green);
            p2.setBackground(Color.pink);
            p3.setBackground(Color.orange);
            p4.setBackground(Color.lightGray);
            
            //把上面4个面板添加到中心面板p中,并把4个面板分别用编号为1,2,3,4代替
            p.add(p1,"1");
            p.add(p2,"2");
            p.add(p3,"3");
            p.add(p4,"4");
            
            //把4个标签分别添加到4个子面板中
            p1.add(l1);
            p2.add(l2);
            p3.add(l3);
            p4.add(l4);
            
            //实例化位于南部区域的面板,并添加4个按钮
            JPanel psourth = new JPanel();
            psourth.add(b1);
            psourth.add(b2);
            psourth.add(b3);
            psourth.add(b4);
            
            //把p,psourth分别添加到本JFrame的中心区域和南部区域
            this.add(p);//等价于this.add(p,BorderLayout.CENTER); 因为默认是把组件添加到中部    
            this.add(psourth,BorderLayout.SOUTH);
            
            //为按钮b1添加监听器,当被按下时显示面板p中的前一个子面板
            b1.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    c.previous(p);//显示p中的上一个面板
                }            
            });
            
            //为按钮b2添加监听器,当被按下时显示面板p中的第2个子面板
            b2.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    c.show(p, "2");//显示p中代号为2的面板
                }            
            });
            
            //以下类推
            b3.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    c.show(p, "3");
                }            
            });
            
            b4.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    c.next(p);
                }            
            });
            
            //使用匿名内部类为本Frame添加监听器,当点击关闭按钮时结束程序
            this.addWindowListener(new WindowAdapter()
            {
                public void windowClosing(WindowEvent e)
                {
                    System.exit(0);
                }
            });
            
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            new Card("My Card");
    
        }
    
    }
    
    
    
     

    运行结果:

     

     

  • 相关阅读:
    文档重复检测软件 DuplicateDetector
    Afinal 0.2.1 发布 Android的快速开发框架
    CshBBrain 4.0 发布,高性能WebSocket服务器
    英特尔的 C++ 编译器发布 13.0 版本
    Perl 5.16.2 发布
    OpenBSD 5.2 发布
    Webconverger 15.1 发布,适合网吧的 Linux
    Spring Framework 3.2 RC1 发布
    Postgres 9.2 新特性之:范围类型 (Range Types)
    Expression Blend实例中文教程系列文章汇总
  • 原文地址:https://www.cnblogs.com/UUUP/p/3800843.html
Copyright © 2011-2022 走看看