java动作事件监听接口

Java中使用观察者模式实现自定义事件

MyEventTest java:

package wintys event;

import javax swing event EventListenerList;

import java util Date;

import java text DateFormat;

import java text SimpleDateFormat;

/**

* Java的事件机制/自定义事件

运行结果:

do something interesting in source here

listener detects [event]:wintys event MyEvent[source=wintys event MySource@

] [occur at]: : :

listener detects [event]:wintys event MyEvent[source=wintys event MySource@

] [occur at]: : :

* @version

* @author 天堂露珠 ()

* @see

*/

class MyEventTest{

public static void main(String[] args){

MySource source = new MySource();

MyListener myListener = new MyListener(){

public void doMyAction(MyEvent e){

System out println( listener detects + e);

}

};

source addMyListener(myListener);

source addMyListener(myListener);

source addMyListener(myListener);

source removeMyListener(myListener);

亏友source doSomething();

}

}

/**

* 自定义的事件

* @version

* @author 天堂露珠()

* @see

*/

class MyEvent extends java util EventObject{

private Date date;//记录事件发生的时间

public MyEvent(Object source Date date){

super(source);

this date = date;

}

public String toString(){

DateFormat df = new SimpleDateFormat( yyyy MM dd HH:mm:ss );

String dt = df format(date);

return [event]: + super toString() + [occur at]: + dt;

}

}

/**

* 自定义事件监听器接口

* @version

* @author 天堂露珠()

* @see

*/

interface MyListener extends java util EventListener{

void doMyAction(MyEvent e);

 高高 }

/**

* 自定义事件源

* @version

* @author 天堂露珠()

* @see

*/

class MySource{

/**

* 保存注册的监听器戚空尺列表

* 子类可以使用它保存自己的事件监听器(非MyListener监听器)列表

*/

protected EventListenerList listenerList = new EventListenerList();

private MyEvent myEvent = null;//fireDoMyAction()使用此变量

/**

* 没有做任何事

*/

public MySource(){

}

/**

* 添加一个MyListener监听器

*/

public void addMyListener(MyListener listener){

listenerList add(MyListener class listener);

}

/**

* 移除一个已注册的MyListener监听器

* 如果监听器列表中已有相同的监听器listener listener

* 并且listener ==listener

* 那么只移除最近注册的一个监听器

*/

public void removeMyListener(MyListener listener){

listenerList remove(MyListener class listener);

}

/**

* @return 在此对象上监听的所有MyListener类型的监听器

*/

public MyListener[] getMyListeners(){

return (MyListener[])listenerList getListeners(MyListener class);

}

//Winty:Copy directly from javax swing event EventListenerList

/*Notify all listeners that have registered interest for

notification on this event type The event instance

is lazily created using the parameters passed into

the fire method

*/

protected void fireDoMyAction() {

// getListenerList() Guaranteed to return a non null array

Object[] listeners = listenerList getListenerList();

// Process the listeners last to first notifying

// those that are interested in this event

for (int i = listeners length ; i= ; i = ) {

if (listeners[i]==MyListener class) {

// Lazily create the event:

if (myEvent == null)

myEvent = new MyEvent(this new Date());

((MyListener)listeners[i+ ]) doMyAction(myEvent);

}

}

}

/**

* 做一些事件源应该做的有意义的事 然后通知监听器

* 这里只是一个示例方法

* 例如:MySource如果是一个按钮 则doSomething()就可以命名为click()

* 当用户点击按钮时调用click()方法

*/

public void doSomething() {

System out println( do something interesting here );

fireDoMyAction();//通知监听器

}

}

lishixinzhi/Article/program/Java/hx/201311/26237

java动作事件监听接口

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月21日 19:57:02
下一篇 2024年3月21日 20:04:21

相关推荐

  • java调试接口,java 调接口

    java调试 1、JTAG仿真器 JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行调试的设备。 2、您的Java程序没有正确执行。请检查您是否已使用Java虚拟机(Java Virtual Machine, JVM)来正确地执行编译好的.class文件。如果没有在JVM中正确执行程序,则无法在命令行中看到预期的输出。命令行中的Ja…

    2024年5月18日
    3300
  • linux嵌入式系统驱动,嵌入式linux调用驱动接口

    嵌入式linux驱动要学哪些 1、(3)Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。 2、嵌入式linux上层应用,包括QT的GUI开发 嵌入式linux系统开发 嵌入式linux驱动开发嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等 Linux…

    2024年5月18日
    3500
  • java判断类是否实现接口,判断类是否实现某接口

    禽类有多少种类? 禽类主要包括家禽和飞禽,其种类极多,常见的家禽主要有鸡、鸭、鹅、雉鸡等动物,而飞禽类动物包括鹧鸪、北极燕鸥、鹰、白颊林莺、水蒲苇莺、金雕、白冠长尾雉、海鸥等。 公开的`《国家畜禽遗传资源目录》中明确了家养畜禽种类33种,包括其地方品种、培育品种、引入品种及配套系。 鸡 鸡是一种家禽,家鸡源出于野生的原鸡,其驯化历史至少约4000年,但直到1…

    2024年5月18日
    3800
  • java推送服务器,java数据接口推送数据

    java中使用websocket推送消息服务器端怎么才能主动推送 java消息推送websocket实现原理:在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” 。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocke…

    2024年5月17日
    3900
  • 开发java接口文档模板,java开发接口怎么写

    如何用Java编写外部系统接口实现文件导入 首先在项目下创建一个新的文件夹,用来保存jar包。在项目名上点击鼠标右键,按顺序点击【New】→【Floder】,打开新建文件夹的窗口 输入文件夹名称【lib】,点击【ok】。 执行静态SQL语句。通常通过Statement实例实现。执行动态SQL语句。通常通过PreparedStatement实例实现。执行数据库…

    2024年5月17日
    3500
  • java判断是否实现接口,判断类是否实现某接口

    java判断对象是否实现接口会报错 字符串变量未初始化;接口类型的对象没有用具体的类初始化,比如:List lt;会报错 List lt = new ArrayList();则不会报错了 当一个对象的值为空时,没有判断为空的情况。 Class中有个方法 public native boolean isAssignableFrom(Class? cls)用来判…

    2024年5月17日
    3300
  • 微信高级群发接口java,微信群开发接口

    java怎么实现群发短信的功能 1、第根据http://1322106:80/CompanySendSmInf/services/SmsInf?wsdl 拿到WSDL文件。第根据Axis的jar包,把WSDL文件生成客服端java代码。(可以把java文件打成jar文件,便于管理。 2、Java实现短信自动发送功能主要是用httpclient实现的,要有发短…

    2024年5月16日
    2900
  • java开发app接口,java接口开发是什么意思

    用java开发app后台用什么框架 来自Facebook — React Native是一种开源框架,从Facebook的React Java框架派生而来,众所周知,Java框架取代了早些时候的HTML5基础。 Struts是一个基于Sun Java EE平台的MVC框架;Spring是轻量级的Java EE应用程序框架;Hibernate是一个开放源代码的…

    2024年5月16日
    3300
  • javaconsumer接口,java接口comparable

    怎么为自己的网站编写api接口 在设计之初就需要将API详细功能整理出来,按业务功能点或模块来划分,明确此API需要提供哪些功能。 熟悉API接口开发,这里包括你自行开发API的能力以及调用第三方API的经验。熟悉TCP/IP,socket等网络协议和相关知识。熟练掌握App发布的流程,真机调试技巧,证书,打包,上架。 php实现api接口的方法:首先安装好…

    2024年5月16日
    3400
  • java匿名对象的使用,java实现匿名接口

    java中匿名对象是什么东西?怎样理解匿名对象?什么时候用? 匿名对象使用方法一:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。如果对一个对象进行多个成员的调用,就必须给这个对象起个名字。匿名对象使用方法二:可以将匿名对象作为实际参数进行传递。 方法2中new A()就是一个匿名对象,他没有名字。这样可以理解了吧。 匿名类与其他类的不同就…

    2024年5月16日
    3200

发表回复

登录后才能评论



关注微信