JavaBeans教程

上传人:lcm****801 文档编号:89280646 上传时间:2019-05-22 格式:PDF 页数:11 大小:181.89KB
返回 下载 相关 举报
JavaBeans教程_第1页
第1页 / 共11页
JavaBeans教程_第2页
第2页 / 共11页
JavaBeans教程_第3页
第3页 / 共11页
JavaBeans教程_第4页
第4页 / 共11页
JavaBeans教程_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《JavaBeans教程》由会员分享,可在线阅读,更多相关《JavaBeans教程(11页珍藏版)》请在金锄头文库上搜索。

1、ps教程:JavaBeans教程 疯狂代码 http:/CrazyC :http:/CrazyC JavaBean属性 JavaBean属性和般Java中所指属性或者说和所有面向对象设计语言中对象属性是个概念在中具体体现就是类中 变量在JavaBean设计中按照属性区别作用又细分为 4类:Simple, Index, Bound和Constrained属性 3.1.1 Simple属性 个简单属性表示个伴随有对get/思路方法(C语言过程或在Java中称为“思路方法“)变量属性名和和该属性相关 get/思路方法名对应例如:如果有X和getX思路方法则暗指有个名为“X“属性如果有个思路方法名为i

2、sX则通常暗 指“X“是个布尔属性(即X值为true或false)例如在下面这个中: public alden1 extends Canvas ourString= “Hello“; /属性名为ourString类型为串 public alden1 /alden1是alden1构造和C中构造意义相同 Background(Color.red); Foreground(Color.blue); /* “属性*/ public void String(String String) ourString=String; /* “get“属性 */ public String getString our

3、String; 3.1.2 Indexed属性 个Indexed属性表示个值使用和该属性对应/get思路方法可取得中数值该属性也可次设置或取得整个值例: public alden2 extends Canvas dataSet=1,2,3,4,5,6; / dataSet是个indexed属性 public alden2 Background(Color.red); Foreground(Color.blue); /* 设置整个 */ public void DataSet( x) dataSet=x; /* 设置中单个元素值 */ public void DataSet( index, x)

4、 dataSetindex=x; /* 取得整个值 */ public getDataSet dataSet; /* 取得中指定元素值 */ public getDataSet( x) dataSetx; 3.1.3 Bound属性 个Bound属性是指当该种属性值发生变化时要通知其它对象每次属性值改变时这种属性就点火个 PropertyChange事件(在Java中事件也是个对象)事件中封装了属性名、属性原值、属性变化后新值这种事件是 传递到其它Bean至于接收事件Bean应做什么动作由其自己定义 图3.1是个简单Bound属性示意图当PushButtonbackground属性 和Dial

5、ogbackground属性bind时若 PushButtonbackground属性发生变化时Dialogbackground属性也发生同样变化 例: public alden3 extends Canvas String ourString= “Hello“; /ourString是个bound属性 private PropertyChangeSupport changes = PropertyChangeSupport(this); /* 注:Java是纯面向对象语言如果要使用某种思路方法则必须指明是要使用哪个对象思路方法在下面中要进行 点火事件操作这种操作所使用思路方法是在Proper

6、tyChangeSupport类中所以上面声明并例子化了个 changes对象在下面将使用changesfirePropertyChange思路方法来点火ourString属性改变事件*/ public void String( String) String oldString = ourString; ourString = String; /* ourString属性值已发生变化于是接着点火属性改变事件 */ changes.firePropertyChange(“ourString“,oldString,String); public String getString ourString

7、; /* 以下代码是为开发工具所使用我们不能预知alden3将和哪些其它Bean组合成为个应用无法预知若 alden3ourString属性发生变化时有哪些其它组件和此变化有关因而alden3这个Bean要预留出些接口给开发工 具开发工具使用这些接口把其它JavaBean对象和alden3挂接*/ public void addPropertyChangeListener(PropertyChangeLisener l) changes.addPropertyChangeListener(l); public void removePropertyChangeListener(Property

8、ChangeListener l) changes.removePropertyChangeListener(l); 通过上面代码开发工具changesaddPropertyChangeListener思路方法把其它JavaBean注册入ourString属性 监听者队列l中l是个Vector可存储任何Java对象开发工具也可使用 changesremovePropertyChangeListener思路方法从l中注销指定对象使alden3ourString属性改变不再和这 个对象有关当然当员手写代码编制时也可直接这两个思路方法把其它Java对象和alden3挂接 3.1.4 Constrai

9、ned属性 个JavaBeanconstrained属性是指当这个属性值要发生变化时和这个属性已建立了某种连接其它Java对象可否 决属性值改变constrained属性监听者通过抛出PropertyVetoException来阻止该属性值 改变过程如图3.2 例:下面中constrained属性是PriceInCents public JellyBean extends Canvas private PropertyChangeSupport changes= PropertyChangeSupport(this); private VetoableChangeSupport Vetos=

10、VetoableChangeSupport(this); /*和前述changes相同可使用VetoableChangeSupport对象例子Vetos中思路方法在特定条件下来阻止 PriceInCents值改变*/ public void PriceInCents( PriceInCents) throws PropertyVetoException /* 思路方法名中throws PropertyVetoException作用是当有其它Java对象否决PriceInCents改变时要抛出例 外*/ /* 先保存原来属性值*/ oldPriceInCents=ourPriceInCents;

11、 /*点火属性改变否决事件*/ vetos.fireVetoableChange(“priceInCents“, Integer(OldPriceInCents), Integer(PriceInCents); /*若有其它对象否决priceInCents改变则抛出例外不再继续执行下面两条语句思路方法结束若无其它对象否决 priceInCents改变则在下面代码中把ourPriceIncents赋予新值并点火属性改变事件*/ ourPriceInCents=PriceInCents; changes.firePropertyChange(“priceInCents“, Integer(oldP

12、riceInCents), Integer(PriceInCents); /*和前述changes相同也要为PriceInCents属性预留接口使其它对象可注册入PriceInCents否决改变监听者队 列中或把该对象从中注销 public void addVetoableChangeListener(VetoableChangeListener l) vetos.addVetoableChangeListener(l); public void removeVetoableChangeListener(VetoableChangeListener l) vetos.removeVetoabl

13、eChangeListener(l); 从上面例子中可看到个constrained属性有两种监听者:属性变化监听者和否决属性改变监听者否决属性改变监 听者在自己对象代码中有相应控制语句在监听到有constrained属性要发生变化时在控制语句中判断是否应否决 这个属性值改变 总的某个Beanconstrained属性值可否改变取决于其它Bean或者是Java对象是否允许这种改变允许和否条件由 其它Bean或Java对象在自己类中进行定义 JavaBean事件 事件处理是JavaBean体系结构核心的通过事件处理机制可让些组件作为事件源发出可被描述环境或其它组件接 收事件这样区别组件就可在构造工

14、具内组合在起组件的间通过事件传递进行通信构成个应用从概念上讲事件是 种在“源对象“和“监听者对象“的间某种状态发生变化传递机制事件有许多区别用途例如在Windows系统中常要 处理鼠标事件、窗口边界改变事件、键盘事件等在Java和JavaBean中则是定义了个般、可扩充事件机制这种机 制能够: 对事件类型和传递模型定义和扩充提供个公共框架并适合于广泛应用 和Java语言和环境有较高集成度 事件能被描述环境捕获和点火 能使其它构造工具采取某种技术在设计时直接控制事件以及事件源和事件监听者的间联系 事件机制本身不依赖于复杂开发工具 特别地还应当: 能够发现指定对象类可以生成事件 能够发现指定对象类

15、可以观察(监听)到事件 提供个常规注册机制允许动态操纵事件源和事件监听者的间关系 不需要其它虚拟机和语言即可实现 事件源和监听者的间可进行高效事件传递 能完成JavaBean事件模型和相关其它组件体系结构事件模型中立映射 3.2.1 概述 JavaBean事件模型总体结构图见图3.3, 主要构成有: 事件从事件源到监听者传递是通过对目标监听者对象Java思路方法进行 对每个明确事件发生都相 应地定义个明确Java思路方法这些思路方法都集中定义在事件监听者(EventListener)接口中这个接口要继承 java.util.EventListener 实现了事件监听者接口中些或全部思路方法类就是事件监听者 伴随着事件发生相应状 态通常都封装在事件状态对象中该对象必须继承自java.util.EventObject事件状态对象作为单参传递给应响应该 事件监听者思路方法中 发出某种特定事件事件源标识是:遵从规定设计格式为事件监听者定义注册思路方法并接 受对指定事件监听者接口例子引用 有时事件监听者不能直接实现事件监听者接口或者还有其它额外动作时就要 在个源和其它个或多个监听者的间插入个事件适配器类例子来建立它们的间联系 3.2.2 事件状态对象(Event State Object) 和事件发生有关状

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号