标签:目的 imp null 窗口 ble 服务 str system closed
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) { } }); } }
标签:目的 imp null 窗口 ble 服务 str system closed
原文地址:https://www.cnblogs.com/BelieveFish/p/10286603.html