• GUI窗体监听---适配器模式


    GUI(布局管理器)
    * FlowLayout(流式布局管理器)
        * 从左到右的顺序排列。
        * Panel默认的布局管理器。
    * BorderLayout(边界布局管理器)
        * 东,南,西,北,中
        * Frame默认的布局管理器。
    * GridLayout(网格布局管理器)
        * 规则的矩阵
    * CardLayout(卡片布局管理器)
        * 选项卡
    * GridBagLayout(网格包布局管理器)
        * 非规则的矩阵
    ###25.15_GUI(窗体监听)
        Frame f = new Frame("我的窗体");
        //事件源是窗体,把监听器注册到事件源上
        //事件对象传递给监听器
        f.addWindowListener(new WindowAdapter() {
                  public void windowClosing(WindowEvent e) {
                             //退出虚拟机,关闭窗口
                System.exit(0);
            }
        });
    a.什么是适配器
        * 在使用监听器的时候, 需要定义一个类事件监听器接口.
        * 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写, 这很繁琐.
        * 适配器简化了这些操作, 我们定义监听器时只要继承适配器, 然后重写需要的方法即可.
    * b.适配器原理
        * 适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的.
        * 适配器类需要定义成抽象的,因为创建该类对象,调用空方法是没有意义的
        * 目的就是为了简化程序员的操作, 定义监听器时继承适配器, 只重写需要的方法就可以了.
    import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
    
    public class demon1_frame {
        /*
         * * FlowLayout(流式布局管理器)
        * 从左到右的顺序排列。
        * Panel默认的布局管理器。
        * BorderLayout(边界布局管理器)
            * 东,南,西,北,中
            * Frame默认的布局管理器。
        * GridLayout(网格布局管理器)
            * 规则的矩阵
        * CardLayout(卡片布局管理器)
            * 选项卡
        * GridBagLayout(网格包布局管理器)
            * 非规则的矩阵
         */
        public static void main(String[] args) {
            Frame f = new Frame("我的第一个窗口");     //可以给一个名字
            f.setSize(400,200);      //设置大小
            f.setLocation(300, 100); // 设置位置
            f.setIconImage(Toolkit.getDefaultToolkit().createImage("qq.png"));  //设置图标
            Button b1 = new Button("按钮1");
            Button b2 = new Button("阿按钮2");
            f.add(b1);
            f.add(b2);
            f.setLayout(new FlowLayout());    //设置 布局       
            //f.addWindowListener(new MyWindowAdapter());
            f.addWindowListener(new WindowAdapter() {
    
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
                
            });
            b1.addMouseListener(new MouseAdapter() {            
                @Override
                public void mouseReleased(MouseEvent e) {         //鼠标释放        
                    System.exit(0);
                }
                /*
                @Override
                public void mouseClicked(MouseEvent e) {    //单击
                    System.exit(0); 
                }*/                        
            });
            b1.addKeyListener(new KeyAdapter() {
    
                @Override
                public void keyPressed(KeyEvent e) {
                    //System.out.println(e.getKeyCode());
                    /*if (e.getKeyCode() == 32) {
                        System.exit(0);
                    }*/
                    if (e.getKeyCode() == KeyEvent.VK_SPACE) {
                        System.exit(0);
                    }
                    // System.exit(0);
                }
                
            });
            
            b2.addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {  // 默认对的是空格键和鼠标左键
                    System.exit(0);
                }
                
            });
            f.setVisible(true);   // 设置窗口课件
        }
    
    }
    
    /*class MyWindowListener implements WindowListener{
    
        @Override
        public void windowOpened(WindowEvent e) {
        }
    
        @Override
        public void windowClosing(WindowEvent e) {
             System.exit(0);
        }
    
        @Override
        public void windowClosed(WindowEvent e) {
            System.out.println("窗口关闭closed");
        }
    
        @Override
        public void windowIconified(WindowEvent e) {
        }
    
        @Override
        public void windowDeiconified(WindowEvent e) {
        }
    
        @Override
        public void windowActivated(WindowEvent e) {
        }
    
        @Override
        public void windowDeactivated(WindowEvent e) {
        }
        
    }*/
    
    class MyWindowAdapter extends WindowAdapter{
    
        @Override
        public void windowClosing(WindowEvent e) {
            
            System.exit(0);
        }
        
    }
    竹杖芒鞋轻胜马,一蓑烟雨任平生。 回首向来萧瑟处,也无风雨也无晴。
  • 相关阅读:
    acwing793. 高精度乘法
    acwing788. 逆序对的数量
    acwing791. 高精度加法
    acwing787. 归并排序
    acwing789. 数的范围
    acwing790. 数的三次方根
    acwing786. 第k个数
    acwing792. 高精度减法
    1.9
    课程总结
  • 原文地址:https://www.cnblogs.com/yaobiluo/p/11357521.html
Copyright © 2020-2023  润新知