之前写过自己的js框架,有比较完善的事件体系。当后台java代码用到类似功能时,发现写法相当繁琐,就开发了一个简单的事件系统。
用法如下:
1、定义监听器
public class PageRequestListener implements IListener { @Override public void execute(Event event) { //request为event的自定义属性 HttpServletRequest request=event.getProperty("request"); /*代码*/ } }
2、添加监听
//第一个参数是事件名称,第二个参数是监听器,IListener的实现类 Observable.addListener("PageRequest",new PageRequestListener());
3、触发事件
//Event第一个参数是事件名称,第二个参数是eventSource,可选。addProperty方法增加事件对象的自定义属性,可以链式调用。此处是增加的一个request对象 Observable.fireEvent(new Event("PageRequest").addProperty("request",request));
下边贴上源码,包含三个类,非别是Observable、IListener、Event
1、Observable
public class Observable { private static Map<String,List<IListener>> listeners=new HashMap<String,List<IListener>>(); public static void addListener(String type,IListener ls){ List<IListener> lsList= listeners.get(type); if(lsList==null){ lsList=new ArrayList<IListener>(); listeners.put(type,lsList); } lsList.add(ls); } public static void fireEvent(Event event){ String type=event.getType(); List<IListener> lsList= listeners.get(type); if(lsList!=null){ for(IListener ls:lsList){ ls.execute(event); } } } }
2、IListener
public interface IListener extends EventListener { public void execute(Event e); }
3、Event
public class Event extends EventObject { private String type; private Map<String, Object> properties; public Event(String type, Object source) { super(source); this.type = type; } public Event(String type) { super("none"); this.type = type; } public Event(Object source, String type, Map<String, Object> properties) { super(source); this.type = type; this.properties = properties; } public String getType() { return type; } public <T> T getProperty(String key) { return properties != null ? (T) properties.get(key) : null; } public Event addProperty(String key, Object value) { if (this.properties == null) { this.properties = new HashMap<String, Object>(); } this.properties.put(key, value); return this; } }
相关推荐
Java学习体系结构是一个全面的指南,旨在帮助初学者掌握Java编程技能,并逐步深入到JavaEE应用开发。以下是对各个知识点的详细说明: 1. **JavaSE基础**:这是学习Java的第一步,包括JDK的安装,编写HelloWorld程序...
它们都有各自的事件体系,AWT事件相对基础,Swing事件则更强大且可定制化。 3. **事件类和监听器接口**:例如,`ActionListener`用于处理按钮点击,`MouseListener`处理鼠标操作,`KeyListener`处理键盘输入。理解...
在深入学习Java图形界面和事件响应机制之前,首先要明确GUI编程(Graphical User Interface Programming)的基本概念。GUI是图形用户界面的缩写,它通过图形化方式提供用户与计算机交互的界面。与传统的命令行界面...
在Java编程中,"Draw.java"是唯一的一个源代码文件,这表明该程序可能采用了单一类的简单结构,或者所有功能都被封装在一个类中。尽管代码量小,但仍然需要遵循良好的编程习惯,如合理地划分方法,确保代码可读性...
综上所述,构建一个 Java 实现的简单画图程序需要掌握 Java 的 GUI 编程,理解 AWT 和 Swing 的组件体系,熟练使用 `Graphics` 类进行图形绘制,并能够处理用户交互事件。通过对 `paintComponent()` 方法的重写,...
### JAVA技术体系 #### Java 技术概览 Java 是一种广泛使用的计算机编程语言,具有简单性、面向对象、健壮性、安全性、平台独立性等特点。Java 的核心技术包括 Java Standard Edition (Java SE),Java Enterprise ...
Java微信开发框架对微信官方提供的各类API进行了封装,包括但不限于用户管理(如用户关注、取消关注事件处理)、消息处理(文本、图片、语音等消息的接收与响应)、菜单创建与管理、支付接口集成、小程序接口调用等...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...
Java事件模型中,监听器接口用于接收特定类型的事件通知,例如键盘事件、鼠标事件等。通过实现这些接口,开发者可以编写响应用户交互的代码。 `javax.swing.RootPaneContainer`接口是Swing组件中的一个关键角色,它...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...
Java技术体系API汇总是一个全面的资源集合,涵盖了编程、数据库操作和前端开发等多个关键领域。以下是对这些领域的详细解析: 1. **Java API**:Java Development Kit (JDK) 提供了丰富的API,使得开发者可以构建...
1.2.1 简单性 1.2.2 面向对象 1.2.3 网络技能 1.2.4 健壮性 1.2.5 安全性 1.2.6 体系结构中立 1.2.7可移植性 1.2.8 解释型 1.2.9 高性能 1.2.10 多线程 1.2.11 多态性 1.3 Java Applet与Internet 1.4 Java发展简史 ...
例子可能包括简单的类设计和复杂的继承体系。 3. **集合框架**: Java集合框架是存储和管理对象的重要工具,包括ArrayList、LinkedList、HashSet、HashMap等。理解它们的工作原理和适用场景是关键。 4. **输入/输出...