JavaBean 得Bound 属性。

shclhs 2004-11-18 09:39:33
我在学习JavaBean,但是对javaBean的Bound 属性 不理解。我参照一点例子,写了下面一个程序。可是运行总是不成功,还望大家能帮我看看,那里不对。

第一个类

package untitled1;

public class Untitled1 {
public Untitled1() {
}
public static void main(String args[]){
BoundBean bb = new BoundBean();
bb.setName("Change");
}
}

第二个类

package untitled1;

import java.beans.*;

public class BoundBean {

private String name = null;

private PropertyChangeSupport pcs = new PropertyChangeSupport(this);

private ListenBean lb = new ListenBean();

public BoundBean() {
}

public void addPropertyChangeListener(PropertyChangeListener argPCL) {
if (pcs == null) {
pcs = new PropertyChangeSupport(this);
}

pcs.addPropertyChangeListener(argPCL);
}

public void removePropertyChangeListener(PropertyChangeListener argPCL) {
if (pcs == null) {
pcs = new PropertyChangeSupport(this);
}

pcs.removePropertyChangeListener(argPCL);
}

public void setName(String argName) {
String oldValue = name;
name = argName;
pcs.firePropertyChange("name", oldValue, argName);
System.out.println(argName);
}

public String getName() {
return name;
}
}

第三个类

package untitled1;

import java.beans.*;

public class ListenBean implements PropertyChangeListener {

public ListenBean() {
}

public void propertyChange(PropertyChangeEvent evt) {
System.out.println("Success");
}
}


执行结果:只打印 Change ,没有打印 Success

希望大家多多帮助。
...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shclhs 2004-11-19
  • 打赏
  • 举报
回复
第一个类

package untitled1;

public class Untitled1 {
public Untitled1() {
}
public static void main(String args[]){
BoundBean bb = new BoundBean();
bb.addPropertyChangeListener(new ListenBean());
bb.setName("Change");
}
}

第二个类

package untitled1;

import java.beans.*;

public class BoundBean {

private String name = null;

private PropertyChangeSupport pcs = new PropertyChangeSupport(this);

private ListenBean lb = new ListenBean();

public BoundBean() {
}

public void addPropertyChangeListener(PropertyChangeListener argPCL) {
if (pcs == null) {
pcs = new PropertyChangeSupport(this);
}

pcs.addPropertyChangeListener(argPCL);
}

public void removePropertyChangeListener(PropertyChangeListener argPCL) {
if (pcs == null) {
pcs = new PropertyChangeSupport(this);
}

pcs.removePropertyChangeListener(argPCL);
}

public void setName(String argName) {
String oldValue = name;
name = argName;
pcs.firePropertyChange("name", oldValue, argName);
System.out.println(argName);
}

public String getName() {
return name;
}
}

第三个类

package untitled1;

import java.beans.*;

public class ListenBean implements PropertyChangeListener {

public ListenBean() {
}

public void propertyChange(PropertyChangeEvent evt) {
System.out.println("Success");
}
}


加了,可是执行结果是这样的

Success
Change

难道对嘛?


各位如果有这方面的例子,可以给我参考参考嘛
lzl123 2004-11-19
  • 打赏
  • 举报
回复
试试在第一个类的main方法中加上一句
bb.addPropertyChangeListener(new ListBean());
这句话必须在bb.setName("Change");之前
3.Bound属性 Bound属性是指当该属性的值发生变化时,要通知其他的对象。每次属性值改变时,这种属性就触发一个PropertyChange事件(在Java程序中,事件也是一个对象)。事件中封装了属性名、属性的原值、属性变化后的新值。这种事件传递到其他的Bean,至于接收事件的Bean应该做什么动作由自己定义。也就是说,Bound属性提供了一种机制,即通知监听器一个JavaBean组件的属性发生了改变。监听器实现了PropertyChangeListener接口并接受由JavaBean组件产生的PropertyChangeEvent对象,PropertyChangeEvent对象包括一个属性名字,旧的属性名字,以及每一个监听器可能访问的新属性值。 Bound属性的用法 在程序中要进行触发事件的操作,使用的方法是在PropertyChangeSupport类中。所以该行声明并实例化了一个changes对象,在下面将使用changes的firePropertyChange方法来触发outString的属性改变事件。 通过上面的程序代码,开发工具调用changes的addPropertyChangeListener方法把其他JavaBean注册入outString属性的监听者的队列1中,队列1是一个Vector数组,可存储任何Java对象。开发工具也可使用changes的removePropertyChangeListener方法,从队列1中注销指定的对象,使example3的outString属性的改变不再与这个对象有关。当然,当程序员手写代码编制程序时,也可以直接调用这两个方法,把其他Java对象与example3挂接。

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧