将项目添加到索引 属性 - PropertyChangeSupport
Adding an item to an indexed property - PropertyChangeSupport
我目前正在使用 PropertyChangeListeners,我想知道是否建议在将对象添加(或删除,就此而言)到索引 [=26= 时触发 属性 更改] 例如 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 教程,似乎在绑定 属性 的值发生变化时触发 属性 更改似乎是合适的。好吧,我不太确定这是否意味着我应该在 属性 被 any 修改时触发 属性 更改,或者仅当 属性(或 属性 的一个元素)严格地 set/reassigned 为不同的值。
在我的程序中,如果每次从垫子 ArrayList 中删除或添加元素时都可以更改几个 类,那将非常方便,我认为 PropertyChangeListener 可以在这方面帮助我。
如果不推荐使用此方法,以及其他 类 是否可以通过其他方式收听和响应 deletion/addition 索引属性,请告诉我。
参见以下示例:
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。
我目前正在使用 PropertyChangeListeners,我想知道是否建议在将对象添加(或删除,就此而言)到索引 [=26= 时触发 属性 更改] 例如 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 教程,似乎在绑定 属性 的值发生变化时触发 属性 更改似乎是合适的。好吧,我不太确定这是否意味着我应该在 属性 被 any 修改时触发 属性 更改,或者仅当 属性(或 属性 的一个元素)严格地 set/reassigned 为不同的值。
在我的程序中,如果每次从垫子 ArrayList 中删除或添加元素时都可以更改几个 类,那将非常方便,我认为 PropertyChangeListener 可以在这方面帮助我。
如果不推荐使用此方法,以及其他 类 是否可以通过其他方式收听和响应 deletion/addition 索引属性,请告诉我。
参见以下示例:
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。