我需要处理2个类之间的更改交互。

public class HeadClass {

private Subclass sub;

public void refresh() {...}

}


public class Subclass{

ArrayList store;

public void add(T data)
store.add(data);
firePropertyChange(...);
}

每当在子类中调用方法“add”时,应在HeadClass中调用方法“refresh”!
但是我应该在哪个类中实现这一行:
private PropertyChangeSupport changes = new PropertyChangeSupport(/*WHAT SHOULD BE HERE?*/);

如果我在HeadClass中实现它,我可以这样反应:
changes.addPropertyChangeListener(new PropertyChangeListener() {
            @Override
            public void propertyChange(PropertyChangeEvent event) {
                refresh();
            }
        });

但是,如果我无法访问propertyChangeSupport“changes”,该如何从子类中触发propertyChangeEvents?

最佳答案

子类获得PropertyChangeSupport,以及添加和删除PropertyChangeListener的方法。您可以将this传递到SubClass的PropertyChangeSupport构造函数中。

public class Subclass{
  private PropertyChangeSupport propChangeSupport =
       new PropertyChangeSupport(this);
  private ArrayList store;

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

  public void removePropertyChangeListener(PropertyChangeListener listener) {
    propChangeSupport.removePropertyChangeListener(listener);
  }


  public void add(T data)
    store.add(data);
    propChangeSupport.firePropertyChange(...);
  }


}

关键始终是什么类需要监听其状态?由于这是SubClass,因此它需要持有属性更改支持。执行侦听的类是将侦听器添加到支持的类。

08-25 01:03