java事件

摘要:
JAVA事件机制事件机制包括三个部分:事件、侦听器和事件源1.事件继承JAVA。utilEventObject类,它封装事件源对象和跟踪事件相关信息自定义事件类CustomEventimportjava。util。事件对象;publicclassCustomEventextendsEventObject{/***构造原型事件。**@par
JAVA事件机制

事件机制包含3个部分:事件,监听器,事件源

1.事件

继承java.util.EventObject类,封装了事件源对象及跟踪事件相关信息

自定义事件类CustomEvent

import java.util.EventObject;

public class CustomEvent extends EventObject {

    /**
     * Constructs a prototypical Event.
     *
     * @param source The object on which the Event initially occurred.
     * @throws IllegalArgumentException if source is null.
     */
    public CustomEvent(Object source) {
        super(source);
    }
}

2.事件监听器

实现java.util.EventListener接口,
核心是:事件监听器要注册到事件源(事件对象里内嵌的object)上,当事件源属性或者状态修改,
遍历监听器并调用监听器其内部回调方法。

自定义事件监听器
CustomEventListener

import java.util.EventListener;
// 事件监听器,定义回调方法,将要做的事放到这个方法下,事件源发生相应的事件会调用这个方法
public class CustomEventListener implements EventListener {

	// 处理事件的方法
    public void fireEvent(CustomEvent event){
        Object obj = event.getSource();
        System.out.println("deal event : " + obj.toString());
    }
}

3.事件源

最核心的地方,事件发生的地方
由于事件源的某个属性发生了改变,生成了相应的时间对象,
事件监听器一定要注册到事件源上,事件源中要有装监听器的容器

EventSourceObject

public class EventSourceObject {
    private String name;
	// 监听器容器
    private Set<CustomEventListener> listeners;

    public EventSourceObject() {
        this.listeners = Sets.newHashSet();
        this.name = "defaultName";
    }
	// 给时间源注册监听器
    public void addCustomListener(CustomEventListener listener){
        this.listeners.add(listener);
    }
	// 当事件发生时,通知注册在该事件源上的所有监听器做出相应反应
    protected void noties(){
        this.listeners.parallelStream().forEach(listener -> {
            listener.fireEvent(new CustomEvent(this));
        });
    }

    public String getName(){
        return name;
    }

    public void setName(String name){
        if (!this.name.equalsIgnoreCase(name)){
            this.name = name;
            noties();
        }
    }
}

4.主方法

public class MainTest {
    public static void main(String[] args) {
        EventSourceObject eventSourceObject = new EventSourceObject();
        eventSourceObject.addCustomListener(new CustomEventListener());
        eventSourceObject.setName("3");
    }
}

免责声明:文章转载自《java事件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OGG初始化之将数据从文件加载到ReplicatOpenssl req命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android控件系列之RadioButton&amp;amp;RadioGroup

学习目的: 1、掌握在Android中如何建立RadioGroup和RadioButton 2、掌握RadioGroup的常用属性 3、理解RadioButton和CheckBox的区别 4、掌握RadioGroup选中状态变换的事件(监听器) RadioButton和CheckBox的区别:1、单个RadioButton在选中后,通过点击无法变为未选中...

jmeter之如何减负-实现稳定超高并发测试(性能调优)之正确添加监听器

jmeter之如何减负-实现稳定超高并发测试(性能调优)在测试过程中,初学者使用工具不当,添加众多监控组件,非常想看到实时报告,跑不了一会,jmeter就卡死,只得重启 下面来总结下如何正确使用jmeter,有效利用执行资源,小型机器也可以实现高并发负载。 减负一: 优化监听(GUI模式)“查看结果树”,需要勾选“仅日志错误”,这样只会保存错误日志到内存,...

spring kafka消费者配置介绍----ackMode

当 auto.commit.enable 设置为false时,表示kafak的offset由customer手动维护,spring-kafka提供了通过ackMode的值表示不同的手动提交方式; ackMode有以下7种值: public enum AckMode { // 当每一条记录被消费者监听器(ListenerConsumer)处理...

Spring 中的观察者模式

一、Spring 中观察者模式的四个角色 1. 事件(ApplicationEvent) ApplicationEvent 是所有事件对象的父类。ApplicationEvent 继承自 jdk 的 EventObject, 所有的事件都需要继承 ApplicationEvent, 并且通过 source 得到事件源。 下列描述了Spring提供的内置事件...

Cobalt Strike初探 楼下的小可怜

简介 Cobalt Strike是一款美国Red Team开发的神器,常被业界人称为CS。以Metasploit为基础的GUI框架式工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,exe、powershell木马生成等。主要用于团队作战,可谓是团队必备神器,能让多个测试人员同时连接到团体服务器上,共享测试资源与目标信息和sessions。 Co...

Android的两种事件处理机制

UI编程通常都会伴随事件处理,Android也不例外,它提供了两种方式的事件处理:基于回调的事件处理和基于监听器的事件处理。 对于基于监听器的事件处理而言,主要就是为Android界面组件绑定特定的事件监听器;对于基于回调的事件处理而言,主要做法是重写Android组件特定的回调函数,Android大部分界面组件都提供了事件响应的回调函数,我们主要重写它们...