4

我需要处理 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 “更改”,我应该如何从子类中触发 propertyChangeEvents?

4

1 回答 1

4

SubClass 获取PropertyChangeSupport,以及添加和删除PropertyChangeListener 的方法。您将传入this子类的 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(...);
  }


}

关键始终是哪个类需要听取其状态?既然是子类,那么它需要持有属性更改支持。进行侦听的类是将侦听器添加到支持中的类。

于 2012-12-08T13:35:29.620 回答