首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将项添加到索引属性- PropertyChangeSupport

将项添加到索引属性- PropertyChangeSupport
EN

Stack Overflow用户
提问于 2015-08-06 17:56:20
回答 1查看 391关注 0票数 1

我目前正在使用PropertyChangeListeners,我想知道当一个对象被添加(或移除)到索引属性(如ArrayList )时,是否应该触发属性更改。

代码语言:javascript
复制
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教程,当绑定属性的值发生变化时,启动属性更改似乎是合适的。嗯,我不太确定这是否意味着,每当以任何方式修改属性时,或者只有当属性(或该属性的一个元素)被严格设置/重新分配到不同的值时,我才会触发属性更改。

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

如果不建议使用此方法,请告诉我,其他类是否可以通过另一种方式侦听和响应索引属性的删除/添加。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 10:49:57

请参见以下示例:

代码语言:javascript
复制
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);
    }

}

它既实现了propertyChange,也实现了mats的indexedPropertyChange。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31862642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档