class A{
   int a;
}
如何添加事件,使得a改变时能够主动同时程序!
谢谢!

解决方案 »

  1.   

    增加属性变化监听器,package test;import java.beans.*;
    import java.io.Serializable;/**
     * @author Trumplet
     */
    public class A extends Object implements Serializable {
        
        public static final String PROP_SAMPLE_PROPERTY = "sampleProperty";
        
        private String sampleProperty;
        
        private PropertyChangeSupport propertySupport;
        
        public A() {
            propertySupport = new PropertyChangeSupport(this);
        }
        
        public String getSampleProperty() {
            return sampleProperty;
        }
        
        public void setSampleProperty(String value) {
            String oldValue = sampleProperty;
            sampleProperty = value;
            propertySupport.firePropertyChange(PROP_SAMPLE_PROPERTY, oldValue, sampleProperty);
        }
        
        
        public void addPropertyChangeListener(PropertyChangeListener listener) {
            propertySupport.addPropertyChangeListener(listener);
        }
        
        public void removePropertyChangeListener(PropertyChangeListener listener) {
            propertySupport.removePropertyChangeListener(listener);
        }
        
    }
      

  2.   

    如果要获得改变后的值呢?
    能不能直接得到,还是要通过getXXX()
    如果要对数组监听呢?
    是不是把整个数组当成一个对象看?
      

  3.   

    使用Observer模式啊。
    为你的类实现Observer接口,添加一个 
    update()方法
    和访问方法
    setA(int a)
    ,并在setA里面调用update方法就可以了
    这比上一个方法要简单的多====CSDN 小助手 V2.5 2005年11月05日发布====
    CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
    界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
    下载:http://szlawbook.com/csdnv2
      

  4.   

    bean.addPropertyChangeListener(new PropertyChangeListener(){
                public void propertyChange(PropertyChangeEvent evt) {
                    beanChange();
                }
                
            });可否在PropertyChangeEvent evt里面得到值的信息?
      

  5.   

    PropertyChangeEvent当然可以得到属性变化信息了:getPropertyName() 
    getNewValue() 
    getOldValue()