`
vakin.jiang
  • 浏览: 147179 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

PropertyChangeListener接口使用初探

    博客分类:
  • J2EE
 
阅读更多

推荐一个开源免费java分布式开发框架:  http://www.jeesuite.com/
接口 java.beans.PropertyChangeListener
顾名思义监听属性改变事件,最近做一些东西需要用到数据绑定相关东西,用到了这个接口。
这里做一个简单DEMO。

public class DemoBeans {

	private String demoName;
	
	PropertyChangeSupport listeners = new PropertyChangeSupport(this);

	public DemoBeans() {
		demoName = "initValue";
	}


	public String getDemoName() {
		return demoName;
	}
	

	public void setDemoName(String demoName) {
		String oldValue = this.demoName;
		this.demoName = demoName;
		//发布监听事件
		firePropertyChange("demoName", oldValue, demoName);
		
	}
	
	public void addPropertyChangeListener(PropertyChangeListener listener) {
		listeners.addPropertyChangeListener(listener);
	}
	
	public void removePropertyChangeListener(PropertyChangeListener listener){
		listeners.addPropertyChangeListener(listener);
	}
	

	/**
	 * 触发属性改变的事件
	 */
    protected void firePropertyChange(String prop, Object oldValue, Object newValue) {
        listeners.firePropertyChange(prop, oldValue, newValue);
    }
   
}



测试类:

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		DemoBeans beans = new DemoBeans();
		beans.addPropertyChangeListener(new PropertyChangeListener(){

			public void propertyChange(PropertyChangeEvent evt) {
				System.out.println("OldValue:"+evt.getOldValue());
				System.out.println("NewValue:"+evt.getNewValue());
				System.out.println("tPropertyName:"+evt.getPropertyName());
			}});
		beans.setDemoName("test");
	}

}



运行结果:


OldValue:initValue
NewValue:test
tPropertyName:demoName

 

分享到:
评论
1 楼 dearzhou520 2011-11-17  
这个例子相当挫。你在setName里面都去主动fire了,用PropertyChangeListener还有什么意义?

相关推荐

    PropertyChangeListener

    `PropertyChangeListener` 是一个接口,定义了一个方法 `propertyChange`,该方法在监听到属性变化时被调用。 ```java public void propertyChange(PropertyChangeEvent event) { // 处理属性变化逻辑 } ``` 在这...

    NetBeans中实现java的一个接口

    这可能涉及到使用`ActionListener`、`PropertyChangeListener`等接口,以及依赖注入框架如Spring或CDI。 总之,通过在NetBeans中实现Java接口,我们可以创建可扩展且易于维护的GUI应用。这种方法促进了代码的模块化...

    详解java中的PropertyChangeSupport与PropertyChangeListener

    PropertyChangeListener 是一个接口,用于监听属性的变化。该接口只有一个方法 propertyChange,用于处理属性变化事件。开发者可以实现该接口,创建自己的监听器,以便在属性变化时执行相应的操作。 在上面的示例...

    使用PropertyChangeSupport监控变量

    `java.beans.PropertyChangeSupport` 是一个抽象类,提供了一组方法来添加、删除和管理`PropertyChangeListener`接口的实例。`PropertyChangeListener`是用于接收属性变化事件的监听器接口。当对象的某个属性值改变...

    PropertyChangeSupportPlugin:使用字节码编织为带注释的 bean 添加 PropertyChangeListener 支持的 Maven 插件

    在 Java 中,`PropertyChangeListener` 是用于监听和响应对象属性变化事件的重要接口。通过使用这个插件,开发者无需手动编写大量的事件处理代码,就能使类具备属性变更通知的能力。 **描述解析:** "属性更改支持...

    DesignPatternJava

    3. **PropertyChangeListener接口**:任何实现这个接口的类都表示对特定属性变化感兴趣。当属性改变时,`propertyChange(PropertyChangeEvent)`方法会被调用,传入一个`PropertyChangeEvent`对象,其中包含了旧值...

    第5章 JSP与JavaBean

    监听器通过实现PropertyChangeListener接口来接收和处理这些事件。 - **Constrained属性**:在属性值即将改变时,允许其他已建立联系的对象进行审批,如果不同意变更,可通过抛出PropertyVetoException阻止。监听器...

    JAVA8新特性总结及案例.doc

    * java.beans.PropertyChangeListener * java.awt.event.ActionListener JAVA8 中的 Lambda 表达式、方法引用和函数式接口的引入,极大地简化了代码、提高了编程效率和灵活性,为开发者提供了更加灵活和高效的编程...

    Java--albumMaker.zip_JAVA相册播放器_图片 播放

    Java的ActionListener和PropertyChangeListener接口可以用来处理这些事件。 7. **文件I/O操作**:为了存储和读取上传的图片,必须进行文件I/O操作。Java的File类和FileInputStream/FileOutputStream等类提供了读写...

    观察者模式与JavaBeans事件

    例如,`ActionListener`接口用于处理动作事件,`PropertyChangeListener`接口用于监听属性变化。 实验中提到的“建立一个基于Bean事件的Internet气象观测站”,可能需要以下步骤: 1. 创建一个气象观测站类...

    openbean.jar AndroidStudio 导入java.beans.*

    2. **PropertyChangeListener** 和 **VetoableChangeListener**: 这两个接口用于监听和处理JavaBean的属性变化。当一个JavaBean的某个属性值改变时,注册了这些监听器的其他组件将接收到通知。 3. **...

    第四章 GEF框架.doc

    为了实现这一通信,EditPart需要实现PropertyChangeListener接口。 模型的实现相对简单,通常需要包含一个PropertyChangeSupport实例。通过调用其addPropertyChangeListener和removePropertyChangeListener方法来...

    基于WorldWind Java加载MD2关键帧动画模型问题研究.pdf

    通过PropertyChangeListener来传递和处理UI和通信消息,实现了Model、View和Controller之间的绑定。 WorldWind Java API主要包含五个重要的接口:Global接口用于表现行星球体和地形;Layer接口用于球体上的影像图层...

    JAVA日期控件的使用例子

    本话题主要围绕"JAVA日期控件的使用例子",我们将深入探讨如何在NetBeans IDE下利用Swing来创建一个包含日期选择功能的应用程序。 首先,Swing提供了两种主要的日期选择控件:JCalendar和JSpinner。JCalendar是一个...

    JAVA Swing日期选择控件datepicker的使用

    在本篇文章中,我们将深入探讨如何在Java Swing应用程序中使用DatePicker,以及相关的实现方法。 一、JCalendar库的使用 1. 添加依赖:为了在Swing应用中使用DatePicker,可以引入JCalendar库,这是一个包含日期...

    java swing 日期datepicker组件使用

    这通常通过实现`ActionListener`接口或者使用`PropertyChangeListener`来实现,当日期改变时,会触发相应的方法,从而执行相应的业务逻辑。 5. **布局管理**:在Swing中,组件的位置和大小通常由布局管理器控制。...

    Java显示数据表格的例子.rar

    5. **数据绑定**: 在更复杂的应用中,你可能会使用 JavaBeans 规范的 `PropertyChangeListener` 或 `BoundPropertyChangeSupport` 来实现数据模型和视图之间的双向绑定。这使得表格的数据能够实时反映模型的变化。 ...

    javaBean协议

    这通常通过实现`EventListener`接口和使用`addXXXListener`和`removeXXXListener`方法来完成。 5. **设计模式**:JavaBean通常遵循单一职责原则,每个Bean专注于完成特定的任务。此外,它们也可能使用工厂模式来...

    java.beans.*

    例如,`java.beans.PropertyChangeListener` 和 `java.beans.VetoableChangeListener` 分别用于监听属性变化事件和可取消变化事件。 5. **Serialization**: Java Beans 支持序列化,允许对象的状态被保存到磁盘或在...

    JavaBean - Bound属性

    4. **实现JavaBeans的接口**:为了支持Bound属性,我们通常需要实现`java.beans.PropertyChangeListener`和`java.beans.VetoableChangeListener`接口。但实际操作中,我们更可能直接在setter方法中调用`...

Global site tag (gtag.js) - Google Analytics