仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 644|回复: 10
打印 上一主题 下一主题

[学习教程] 来看Java:在Bean中利用PropertyChangeSupport撑持PropertyChangeListeners

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:13:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。
JavaBean的属性与一样平常Java程序中所指的属性,大概说与一切面向对象的程序计划言语中对象的属性是一个观点,在程序中的具体表现就是类中的变量。在JavaBean的计划中,依照属性的分歧作用又细分为四类:单值属性;索引属性;联系关系属性;限定属性。
本文次要先容怎样利用PropertyChangeSupport类来撑持联系关系属性事务的触发。
1.联系关系属性
联系关系属性,也称之为绑定属性。绑定属性会在属性值产生变更时,关照一切相干的监听器。为了完成一个绑定属性,必需完成两个机制。
1)不管什么时候,只需属性的值产生变更,该bean必需发送一个PropertyChange事务给一切已注册的监听器。该变更大概产生在调用set办法时,大概程序的用户做出某种举措时。
2)为了使感乐趣的监听器可以举行注册,bean必需完成以下两个办法:
voidaddPropertyChangeListener(PropertyChangeListenerlistener);
voidremovePropertyChangeListener(PropertyChangeListenerlistener);
2.利用PropertyChangeSupport办理监听器
能够经由过程java.bean包下的PropertyChangeSupport类来办理监听器。要利用这个类,bean必需有一个此类的数据域。
privatePropertyChangeSupportchanges=newPropertyChangeSupport(this);
如许就能够将增加和移除监听器的义务交给这个对象。
publicvoidaddPropertyChangeListener(PropertyChangeListenerlistener){
  changes.addPropertyChangeListener(listener);
}
publicvoidremovePropertyChangeListener(PropertyChangeListenerlistener){
  changes.removePropertyChangeListener(listener);
}
当bean的属性产生变更时,利用PropertyChangeSupport对象的firePropertyChange办法,它会将一个事务发送给一切已注册的监听器。该办法有三个参数:属性的名字、旧的值和新的值。属性的值必需是对象,假如是复杂数据范例,则必需举行包装。
changes.firePropertyChange("ourString",oldString,newString);
一切注册的监听器完成PropertyChangeListener接口,该接口中只要一个办法。
publicvoidpropertyChange(PropertyChangeEvente);
当bean的属性值产生变更时,该办法中的代码就会被触发。可以经由过程
e.getOldValue();
e.getNewValue();
来失掉changes.firePropertyChange("ourString",oldString,newString);中的oldString和newString。
3.为何要利用PropertyChangeSupport
利用这个类办理监听器的优点是,它是线程平安的。假如利用一个轮回体来setBean的属性,则这个类能够包管一切监听器实行触发事务的有序。
另有一个优点是,这个类撑持fire带索引的属性改动事务(详见java.bean.IndexedPropertyChangeEvent)。此时向注册的监听器发送一个PropertyChangeEvent的办法为:
voidfireIndexedPropertyChange(StringPropertyName,intindex,ObjectoldValue,ObjectnewValue);
<p>
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......
只想知道 该用户已被删除
沙发
发表于 2015-1-20 17:20:26 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-25 23:11:24 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
乐观 该用户已被删除
地板
发表于 2015-1-26 20:46:10 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
若相依 该用户已被删除
5#
发表于 2015-2-4 20:08:35 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
莫相离 该用户已被删除
6#
发表于 2015-2-10 05:56:38 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
admin 该用户已被删除
7#
发表于 2015-2-11 08:41:01 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
不帅 该用户已被删除
8#
发表于 2015-3-2 04:41:20 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-10 01:14:59 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
蒙在股里 该用户已被删除
10#
发表于 2015-3-17 03:43:26 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
老尸 该用户已被删除
11#
发表于 2015-3-23 18:02:11 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:23

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表