【发布时间】:2015-08-06 17:56:20
【问题描述】:
我目前正在使用 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 教程,似乎每当绑定属性的值发生更改时触发属性更改是合适的。好吧,我不太确定这是否意味着我应该在属性被 any 方式修改时触发属性更改,或者仅在严格设置属性(或该属性的元素)时触发属性更改/重新分配给不同的值。
在我的程序中,如果每次从 mats ArrayList 中删除或添加元素时可以更改多个类,那将非常方便,我认为 PropertyChangeListener 可以在这方面为我提供帮助。
如果不建议使用此方法,以及是否有其他方法可以让其他类可以侦听并响应对索引属性的删除/添加,请告诉我。
【问题讨论】:
-
看合同,修改前发送
mats,修改后发送mats。我怀疑那是你想要的。您可能更想使用fireIndexedPropertyChange。 -
好的,但是如果我尝试 fireIndexedPropertyChange,
pcs.fireIndexedPropertyChange("mat", mats.size(), null, m)会是合适的替代品吗?由于我所学到的关于更改绑定属性的所有内容都与将属性分配给不同的东西有关,而不是添加到/删除它,所以我在参数化此方法时遇到了麻烦。 @KDM
标签: java javabeans propertychangelistener