`

java PropertyChangeListener

    博客分类:
  • java
阅读更多

 PropertyChangeLinstener可以监听属性bean值的改变,应用Observe模式,进行一些操作

 

下面是其简单的使用过程:

1.所要监听的bean的基类:

 

package dirk.prohange;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

public class PropertyChangeSupportTest {

    transient protected PropertyChangeSupport listeners = new PropertyChangeSupport( this );

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        listeners.addPropertyChangeListener(listener);
    }

    protected void firePropertyChange(String prop, Object old, Object newValue) {
        listeners.firePropertyChange(prop, old, newValue);
    }

    public void removePropertyChangeListener(PropertyChangeListener l) {
        listeners.removePropertyChangeListener(l);
    }
}

2. 继承基类所实现的具体bean,在set方法中设置属性监听器的触发fire方法:

 

package dirk.prohange;

public class BeanTest extends PropertyChangeSupportTest {

    public static final String TEST = "test";

    private String name = "";

    public void setName(String name) {
        if (this.name.equals(name)) {
            System.out.println("BeanTest 的 name 属性没有变化!");
            return;
        }
        String oldName = this.name;
        this.name = name;
        firePropertyChange(TEST, oldName, name);
    }

    public String getName() {
        return this.name;
    }
}

 自定义监听器:

 

package dirk.prohange;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

public class BeanTestListener implements PropertyChangeListener {

	public void propertyChange(PropertyChangeEvent evt) {
		// TODO Auto-generated method stub
		if(evt.getPropertyName().equals(BeanTest.TEST))
			System.out.println("I need do something, what is the something");
	}
	
	public static void main(String[] args)
	{
		BeanTest test = new BeanTest();
		test.addPropertyChangeListener(new BeanTestListener());
		test.setName("dirk.zhang");
		test.setName("dirk.zhangzhang");
		System.out.println(test.getName());
	}
	

}
 

 

分享到:
评论

相关推荐

    PropertyChangeListener

    PropertyChangeListener

    详解java中的PropertyChangeSupport与PropertyChangeListener

    主要介绍了详解java中的PropertyChangeSupport与PropertyChangeListener的相关资料,需要的朋友可以参考下

    java pdf 查看器

    import java.beans.PropertyChangeListener; import java.io.*; import java.io.IOException; import java.io.RandomAccessFile; import java.net.*; import java.nio.ByteBuffer; import java.nio.channels....

    JAVA8新特性总结及案例.doc

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

    用js实现和Java中的PropertyChangeSupport类似的观察者模式

    闲着没事,突然想起Java的观察者模式中有一个PropertyChangeSupport与PropertyChangeListener,于是就想看看用js能不能也实现一个,毕竟有时候js写的东西也需要一个观察者模式,于是就写了点东西,应该能派上用场。

    Calculator-in-Java.zip_KeyListener

    应用经典的MVC设计模式实现的计算器app。其中包括WindowListener,PropertyChangeListener,Keylistener,ActionListener这四类监听器的使用细节。

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

    属性更改支持插件 一个 maven 插件,使用字节码编织向带注释的 bean 添加 PropertyChangeListener 支持。

    第5章 JSP与JavaBean

    监听器实现了PropertyChangeListener接口并接受由JavaBean组件产生的PropertyChangeEvent对象,PropertyChangeEvent对象包括一个属性名字,旧的属性名字,以及每一个监听器可能访问的新属性值。 Bound属性的用法 在...

    JListeners-开源

    各种侦听器类型。如果文件被更改,则文件中存在的属性将被更改,以查看更改并在运行的应用程序中使用这些更改的值。此Java API允许您使用诸如PropertyChangeListener,FileChangeListener等的侦听器。

Global site tag (gtag.js) - Google Analytics