HELLOWORLD级事件属性监听小技巧,随便写了点测试代码[转]

本文介绍了一种基于Java Beans的事件监听机制实现方法,通过创建基类BaseEventBean管理和触发属性变化事件,并在POJO类FoolBean中具体实现属性变化的监听与通知功能。
首先,定义一个基类,负责加入监听者,

packagenet.cafe;

importjava.beans.PropertyChangeSupport;
importjava.beans.PropertyChangeListener;

/***//**
*CreatedbyIntelliJIDEA.
*User:JJYAO
*Date:2004-11-1
*Time:23:01:56
*TochangethistemplateuseFile|Settings|FileTemplates.
*/

publicclassBaseEventBean...{

protectedPropertyChangeSupportpcs;

publicvoidaddPropertyChangeListener(PropertyChangeListenerlistener)...{
if(pcs==null)...{
pcs
=newPropertyChangeSupport(this);
}

pcs.addPropertyChangeListener(listener);
}


publicvoidremoveChangeListener(PropertyChangeListenerlistener)...{
if(pcs!=null)...{
pcs.removePropertyChangeListener(listener);
}

}


}

一个POJO继承这个类,并在SET方法里添加触发事件的方法

packagenet.cafe;

/***//**
*CreatedbyIntelliJIDEA.
*User:JJYAO
*Date:2004-11-1
*Time:23:15:34
*TochangethistemplateuseFile|Settings|FileTemplates.
*/

publicclassFoolBeanextendsBaseEventBean...{

privateStringuserName;
privateStringpassword;

publicStringgetPassword()...{
returnpassword;
}


publicvoidsetPassword(StringnewPassword)...{
StringoldPassword
=password;
this.password=newPassword;
pcs.firePropertyChange(
"password",oldPassword,password);
}


publicStringgetUserName()...{
returnuserName;
}


publicvoidsetUserName(StringuserName)...{
this.userName=userName;
}


}

属性监听者

packagenet.cafe;

importjava.beans.PropertyChangeListener;
importjava.beans.PropertyChangeEvent;

/***//**
*CreatedbyIntelliJIDEA.
*User:JJYAO
*Date:2004-11-1
*Time:23:12:33
*TochangethistemplateuseFile|Settings|FileTemplates.
*/

publicclassListenerimplementsPropertyChangeListener...{

publicvoidpropertyChange(PropertyChangeEventevt)...{
System.out.println(
"==========oldvalue========="+evt.getOldValue());
System.out.println(
"==========newValue========"+evt.getNewValue());
}

}

测试代码

packagenet.cafe;

/***//**
*CreatedbyIntelliJIDEA.
*User:JJYAO
*Date:2004-11-1
*Time:23:24:28
*TochangethistemplateuseFile|Settings|FileTemplates.
*/
publicclassBeanEventTest...{

publicstaticvoidmain(String[]args)...{
FoolBeanbean
=newFoolBean();
bean.addPropertyChangeListener(
newListener());
bean.setPassword(
"22222");
bean.setPassword(
"33333");
}

}

BTW,SUN的java.beans.*包含了大多空包,这些方法都需要自己扩展,我们完全不需要用它定义的方法名。
上面的例子完全可以用自己的方法来实现.



通过这个例子,可以方便的构建一个GUI的事件监听类。业务处理层只需要处理数据,而GUI监听器负责将数据更新到界面上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值