java - 将项目添加到索引属性 - PropertyChangeSupport

标签 java javabeans propertychangelistener

我目前正在使用 PropertyChangeListeners,我想知道每当将对象添加(或删除)到索引属性(例如 ArrayList)时是否建议触发属性更改。

public class SimpleBean implements Serializable
{
   private ArrayList<Matrix> mats;
   private PropertyChangeSupport pcs = new PropertyChangeSupport(this);

   public SimpleBean()
   {...}

   public void addMat(Matrix m)
   {
      pcs.firePropertyChange("mats", null, m); // I'm having trouble with the parameters
      mats.add(m);
   }

}

我正在阅读 PropertyChangeListener 教程,似乎每当绑定(bind)属性的值发生变化时就触发属性更改是合适的。好吧,我不太确定这是否意味着每当通过任何方式修改属性时我应该触发属性更改,或者仅当严格设置属性(或该属性的元素)时/重新分配给不同的值。

在我的程序中,如果每次从 mats ArrayList 中删除或添加元素时都可以更改多个类,那将非常方便,并且我认为 PropertyChangeListener 可以在这方面帮助我。

如果不建议使用此方法,以及是否有其他方法可以让其他类监听并响应对索引属性的删除/添加,请告诉我。

最佳答案

请参阅以下示例:

public class SimpleBean implements Serializable {

    private ArrayList<Matrix> mats;
    private PropertyChangeSupport pcs = new PropertyChangeSupport(this);

    public void setMats(ArrayList<Matrix> mats) {
        if(mats.equals(this.mats))
            return;
        ArrayList<Matrix> oldMats = this.mats ;
        this.mats = mats ;
        pcs.firePropertyChange("mats", oldMats, mats);
    }

    public ArrayList<Matrix> getMats() {
        return mats;
    }

    public void setMat(int index, Matrix mat) {
        Matrix existing = index == mats.size() ? null : mats.get(index);
        if(existing.equals(mat))
            return;
        mats.remove(index);
        mats.add(index, mat);
        pcs.fireIndexedPropertyChange("mats", index, existing, mat);
    }

    public Matrix getMat(int index) {
        return mats.get(index);
    }

    public void addMat(Matrix m) {
        setMat(mats.size(), m);
    }

}

它为mats实现了propertyChange以及indexedPropertyChange。

关于java - 将项目添加到索引属性 - PropertyChangeSupport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862642/

相关文章:

java - 如何使用 Spring 调度程序在每个时区的凌晨 0 点做一些工作?

与 GWT 一起使用的 Json <-> Java 序列化

java - 循环属性变化监听器

java - 使用属性更改监听器来更新 swing 组件

java - 通知对象有关事件

Java定期将子目录中的最新文件返回到一个数组中

java - 当 XML 文件重复时,到达我想要的标签的最佳方法是什么?

java - 在声明期间在 bean 中创建新字符串的目的?

java - HandlerInterceptorAdaptarer Spring - 发现从元素 'bean' 开始的无效内容

Java WebApp 不断返回相同的结果