`

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

    `PropertyChangeSupport` 类位于 `java.beans` 包中,用于简化对 `PropertyChangeListener` 的管理。使用该类可以轻松地实现关联属性的支持。下面详细介绍如何使用 `PropertyChangeSupport` 类: - **创建实例**:...

    详解java中的PropertyChangeSupport与PropertyChangeListener

    详解 Java 中的 PropertyChangeSupport 与 PropertyChangeListener Java 中的 PropertyChangeSupport 和 PropertyChangeListener 是 JavaBeans 规范中两个重要的类,它们用于实现属性变化的监听和通知。下面我们将...

    JAVA日历控件datepicker的使用(案例)

    5. **监听事件**:为了处理用户选择日期后的行为,通常需要添加ActionListener或PropertyChangeListener。当用户选择日期时,这些监听器会被触发,你可以在这里处理相应的业务逻辑: ```java datepicker....

    java开发页面进度条

    ### Java开发页面进度条知识点详解 #### 一、概述 在Web应用开发中,为了提升用户体验,页面加载进度条已经成为了一种常见的UI组件。通过Java技术实现页面进度条不仅可以直观地展示页面或数据加载的过程,还能增强...

    一个简易的JAVA数字时钟支持24时12时转换

    这可以通过添加`Timer`类或者注册一个`PropertyChangeListener`到`LocalTime`实例来实现。 5. **多线程**: 由于用户界面需要实时更新,程序可能使用了`Thread`或者`SwingWorker`来在后台线程中执行时间更新,避免...

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

    在Java Swing库中,DatePicker是一个常用的用户界面组件,它允许用户选择日期。Swing本身并不直接提供一个标准的DatePicker组件,但可以通过第三方库或者自定义组件实现。在本篇文章中,我们将深入探讨如何在Java ...

    java Swing 日历

    - 通过监听事件(如ActionListener或PropertyChangeListener)来处理用户的选择,更新应用程序的其他部分。 - 可以自定义日历的外观,例如更改字体、颜色、大小等。 4. **日历的事件处理**: 用户在日历上进行...

    JAVA版qq源码

    4. 在线提示:使用监听机制,如PropertyChangeListener或DocumentListener,可以实时监控好友状态的改变,并在界面上更新显示。此外,可能还会涉及线程同步和事件驱动编程,以确保用户界面的实时性和响应性。 5. ...

    Java自定义日期时间选择控件

    这可能涉及属性改变监听器(如`PropertyChangeListener`),当控件的日期时间值发生变化时,自动更新关联的模型。 5. **国际化支持**:考虑多语言环境,控件应支持日期和时间的国际化,包括月份和星期的名称。这...

    Java日期控件附带使用说明

    在Swing中,可以使用`PropertyChangeListener`,在JavaFX中,使用`ChangeListener<LocalDate>`。 5. **格式化日期**:Java提供了`SimpleDateFormat`(Java 8之前)或`DateTimeFormatter`(Java 8及以后)类用于日期...

    java.beans.*

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

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

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

    openbean.jar AndroidStudio 导入java.beans.*

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

    Java文件选择器源代码.rar

    - **事件监听**:添加`ActionListener`或`PropertyChangeListener`来响应用户的操作和文件选择器状态的变化。 总之,`Java文件选择器源代码`是一个实用的学习资源,可以帮助Java开发者深入了解如何在应用程序中创建...

    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....

    java Swing带复选框的树

    JavaBeans的PropertyChangeSupport和PropertyChangeListener可以实现这一点。 9. **性能优化**:对于大型数据集,你可能需要考虑虚拟化技术,只在需要时绘制可见的节点,以提高性能。 通过以上这些知识点,你可以...

    java swing 日期datepicker组件使用

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

    JAVA8新特性总结及案例.doc

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

    java 帮助文档 chm格式 java中文帮助文档chm格式.docx

    - **关键类**:`BeanInfo`, `PropertyChangeListener` ##### 3.14 `java.lang` - **用途**:提供Java编程语言的基础类。 - **关键类**:`Object`, `String`, `System` ##### 3.15 `java.lang.annotation` - **用途...

    java最全的API帮助文档

    Java的帮助文档提供了对`java.beans`包的详细解释,包括`PropertyChangeEvent`、`PropertyChangeListener`、`BeanInfo`、`Introspector`等核心类和接口。这些文档可以帮助开发者理解如何创建和使用JavaBeans,以及...

Global site tag (gtag.js) - Google Analytics