zoukankan      html  css  js  c++  java
  • Java监听器

    1.原理:

      当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。

    例如:创建一个“人”类Class Person

    人拥有吃的方法public void eat(){},我们的目的就是,在这个人吃之前要提醒他洗手,所以我们就要监听这个人,不管他在什么时候吃,我们都要能够监听到并且提醒他洗手,通俗点讲这个就是监听器的作用(在吃之前提醒他洗手)。

    2.组成:

    //1.事件源里有事件
    //2.监听器里有监听方法
    //3.事件源里注册监听器,事件方法中执行监听器中的监听方法。
    //4.创建事件源对象,注册监听器到事件源,执行事件方法

    3.实现:

     

    package com.hg.listener;
    
    public class Person {//事件源
        PersonListener personListener;
        public void registListener(PersonListener pListener){
            this.personListener = pListener;//
        }
        public void run(){//事件
            if (personListener!=null) {
                
                personListener.dorun();//事件方法中执行监听器中的监听方法
            }
            System.out.println("人具有跑的方法");
        }
        public void eat(){
            if (personListener!=null) {
                
                personListener.doeat();
            }
            System.out.println("人具有吃的方法");
        }
    }

     

    package com.hg.listener;
    
    public class PersonListener {//监听器
        public void dorun(){//监听方法
            System.out.println("监听到了人跑的方法");
        }
        public void doeat(){
            System.out.println("监听到了人吃的方法");
        }
    }

     

    package com.hg.listener;
    
    public class TestListener {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            Person person = new Person();//创建事件源对象
            person.registListener(new PersonListener());//注册监听器到事件源
            person.run();//执行事件方法
            person.eat();
    
        }
    
    }

     4.案例:监听window窗口的事件监听器

    package me.gacl.listener.demo;
    
    import java.awt.Frame;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
    
    public class Demo1 {
    
        /**
         *java的事件监听机制
         *1、事件监听涉及到三个组件:事件源、事件对象、事件监听器
         *2、当事件源上发生某一个动作时,它会调用事件监听器的一个方法,并在调用该方法时把事件对象传递进去,
         *    开发人员在监听器中通过事件对象,就可以拿到事件源,从而对事件源进行操作。
         */
        public static void main(String[] args) {
            
            Frame f = new Frame();
            f.setSize(400, 400);
            f.setVisible(true);
            
            //注册事件监听器
            f.addWindowListener(new WindowListener(){
    
                public void windowActivated(WindowEvent e) {
                    
                }
    
                public void windowClosed(WindowEvent e) {
                    
                }
    
                /**
                 * 当window窗体关闭时就会WindowListener这个监听器监听到,
                 * 监听器就会调用windowClosing方法处理window窗体关闭时的动作
                 */
                public void windowClosing(WindowEvent e) {
                    //通过事件对象e来获取事件源对象
                    Frame f = (Frame) e.getSource();
                    System.out.println(f+"窗体正在关闭");
                    f.dispose();
                }
    
                public void windowDeactivated(WindowEvent e) {
                    
                }
    
                public void windowDeiconified(WindowEvent e) {
                    
                }
    
                public void windowIconified(WindowEvent e) {
                    
                }
    
                public void windowOpened(WindowEvent e) {
                    
                }
            });
        }
    }

     

     

     

  • 相关阅读:
    luoguP1871 对撞机【赛后第一题
    Deep learning-based personality recognition from text posts of online social networks 阅读笔记
    Who Am I? Personality Detection based on Deep Learning for Texts 阅读笔记
    RNN以及LSTM简介
    Compilation failed (return status=1): g++.exe: error: CreateProcess: No such file or directory错误
    Deep Learning-Based Document Modeling for Personality Detection from Text 阅读笔记
    NeuralCoref: python的共指消解工具教程
    NLTK库WordNet的使用方法实例
    matlab使用libsvm入门教程——使用matlab安装配置libsvm以及一个svm分类实例
    原型方法对软件生命周期不同阶段的支持
  • 原文地址:https://www.cnblogs.com/BelieveFish/p/10286603.html
Copyright © 2011-2022 走看看