`
158067568
  • 浏览: 329224 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用PropertyChangeSupport监控变量

阅读更多

 

使用PropertyChangeSupport监控变量

作者:Legend

QQ158067568

这两天在写毕设,遇到了这个一种情况,我的程序中有一个两个状态,我用一个boolean变量来表示着两种状态。这两种状态经常会变化,而且每次变化都会有很多其他的操作。如果每次状态变化时都表用一次变化的代码,万一修改起来就十分头大。JAVA中使用JAVABEAN来解决这类问题。

JAVA BEAN 关联属性

JavaBean的设计中,按照属性的不同作用又细分为四类:单值属性、索引属性、关联属性、限制属性。关联属性,也称之为绑定属性。绑定属性会在属性值发生变化时,通知所有相关的监听器。

将属性变量单独封装到一个java类中,然后使用java.bean.PropertyChangeSupport类来监控变量,参考如下代码:

 

package cn.edu.heut.zcl.bean;

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

public class BeanTest {
	private boolean property;
	private PropertyChangeSupport changeSupport = new PropertyChangeSupport(
			this);

	public void setProperty(boolean newValue) {
		boolean oldValue = property;
		property = newValue;
		changeSupport.firePropertyChange("property", oldValue, newValue);
	}

	public void addPropertyChangeListener(PropertyChangeListener l) {
		changeSupport.addPropertyChangeListener(l);
	}

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

首先用自己定义的类实例化PropertyChangeSupport变量,然后为其注册添加和删除的监听器。每次要监听的值改变时,就调用firePropertyChange()方法。

如何使用

说了半天,如果不知道怎么用就一点用都没有。我写了一个简单的Swing程序,上面就一个小button,每次点击调用setProperty()方法,改变待监控的变量。然后做出相应操作,看代码:

 

package cn.edu.heut.zcl.bean;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class FrameChange  extends JFrame implements PropertyChangeListener{
	BeanTest testBean = new BeanTest();
	boolean beanValue = false;
	public FrameChange(){
		testBean.addPropertyChangeListener(this);
		 JButton jb = new JButton("change");
		 this.setTitle("");
		 this.setBounds(100, 100, 100, 100);
		 this.setLayout(new FlowLayout());
		 this.add(jb);
		 jb.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				testBean.setProperty(!beanValue);
			}
		});
		 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		 this.setVisible(true);
	 }
	 public static void main(String args[]){
		 new FrameChange();
	 }
	@Override
	public void propertyChange(PropertyChangeEvent evt) {
		if(evt.getSource() == testBean){
			beanValue = !beanValue;
			System.out.println("变化"+beanValue);
		}
	}
}

 

 

 

如上所示,首先要实现监听变量的接口,然后把只要每次都调用了改变变量的方法,就会执行相应的操作。

 

 

 

 

0
0
分享到:
评论

相关推荐

    详解java中的PropertyChangeSupport与PropertyChangeListener

    我们使用 PropertyChangeSupport 类来管理该属性的变化,然后在 setter 方法中使用 firePropertyChange 方法来通知监听器。 在客户端代码中,我们创建了一个 TestBean 实例,然后添加了两个监听器 ...

    PropertyChangeSupportApi:处理注释和使用 PropertyChangeSupport 所需的额外代码

    1. **初始化**:在类的初始化阶段,创建一个 `PropertyChangeSupport` 对象,并将其作为类的成员变量。 2. **添加监听器**:当需要监听特定属性变化时,使用 `addPropertyChangeListener` 添加监听器。 3. **改变...

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

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

    PropertyChangeListener

    下面是一个简单的示例,展示如何使用 `PropertyChangeSupport` 来管理关联属性的变化。 ```java public class MyBoundBean implements Serializable { private String ourString = "Hello"; private ...

    DesignPatternJava

    通过理解并正确使用"PropertyChangeSupport",开发者可以在Java应用程序中实现更加灵活和健壮的组件交互,使得系统更易于扩展和维护。设计模式,如观察者模式,是软件工程中不可或缺的一部分,它们为解决复杂问题...

    JavaBean - Bound属性

    3. **添加PropertyChangeSupport对象**:在JavaBean类中,添加一个`java.beans.PropertyChangeSupport`对象作为成员变量,用于管理属性更改事件。例如`private PropertyChangeSupport pcs = new ...

    JavaBean 属性

    在这个例子中,`Alden3` 类定义了一个 `ourString` 属性,并且使用了 `PropertyChangeSupport` 类来管理属性变化事件。当 `ourString` 的值发生变化时,通过调用 `changes.firePropertyChange()` 方法触发事件通知...

    java.pdf格式

    private PropertyChangeSupport changes = new PropertyChangeSupport(this); public void setOurString(String newString) { String oldString = ourString; ourString = newString; changes....

    JavaBeans教程.pdf

    - **PropertyChangeSupport**:在JavaBeans中,`PropertyChangeSupport`类用于管理`PropertyChangeEvent`。通过添加`PropertyChangeListener`,对象可以监听其他对象的属性变化。当Bound属性值改变时,`...

    javaBean复习材料

    此外,还可能涉及JavaBean的事件处理机制,例如ActionListener,以及如何使用PropertyChangeSupport类来实现属性变化监听。 "学员总结复习本门课程模板V1.0.ppt"则可能是一个详细的复习指南,涵盖了JavaBean的主要...

    JavaBeans程序开发从入门到精通

    在JavaBeans中,属性是类中的成员变量,通过getter和setter方法来访问和修改这些变量的值。JavaBeans的属性有四种特殊类型:Simple、Indexed、Bound和Constrained,每种类型都有特定的功能和应用场景。 1. **Simple...

    JavaBeans开发使用手册

    了解了基本概念后,我们可以深入学习JavaBeans的高级特性,比如属性编辑器、定制事件、属性改变通知(`PropertyChangeSupport`和`VetoableChangeSupport`)、国际化支持(`ResourceBundle`)以及JavaBeans的容器支持...

    使用jsp和java.bean来构建一个网上书店

    - **属性通知**:可选的`PropertyChangeSupport`机制,用于监听属性变化。 **3. JSP与JavaBean的结合** 在网上书店系统中,JavaBean通常作为模型(Model)层,负责数据处理和业务逻辑,而JSP作为视图(View)层,...

    Java用Swing开发的固定资产管理系统(完整版+源码).zip

    4. **数据绑定**:在Swing中,可以使用PropertyChangeSupport类进行属性变化的通知,使得视图能够实时响应模型数据的变化,实现双向数据绑定。 5. **数据库连接与操作**:系统可能使用JDBC(Java Database ...

    JavaBeans教程(范例入门

    JavaBeans中的简单属性通常表现为一个变量,伴随着一组get和set方法。这些方法允许外部对象读取或修改属性的值。例如,`alden1`类中定义了一个名为`ourString`的属性,其类型为字符串。通过`getString()`和`...

    JavaBean学习资料

    3. 遵循JavaBeans规范:如果JavaBean属性发生变化,应该提供`PropertyChangeSupport`来支持属性改变事件的发布。 二、JavaBean在JSP中的应用 JSP(JavaServer Pages)是一种动态网页技术,它可以与JavaBean结合使用...

    第5章 JSP与JavaBean

    首先,声明并实例化一个PropertyChangeSupport对象,然后使用它的`firePropertyChange()`方法来触发属性改变事件。开发工具或手动编程时,可以通过`addPropertyChangeListener()`和`removePropertyChangeListener()`...

    javabean BDK

    4. **属性通知**:为了实现属性改变时的通知机制,可以实现 PropertyChangeSupport 接口,使用 addPropertyChangeListener 和 removePropertyChangeListener 方法来添加和移除监听器。 5. **序列化支持**:如果需要...

Global site tag (gtag.js) - Google Analytics