实施房产变更通知的最佳方式是什么?

有一个bean(POJO-like)并且想为它的GUI组件制作模型。 所以我需要通知GUI组件可以反映的每个属性更改。

这个怎么做? 我应该在我的bean中放置通知和监听器存储代码吗? 但这会使它“变脏”。 可能会写一些包装? 但这将重复getter和setter。

在Commons或其他地方是否有任何库和/或辅助对象?

UPDATE

还假设我有AbstractList实现。 如何快速“建立”它,即让它通知听众变化? 例如,通过触发ListDataEvent 。 我知道我可以实现AbstractListModel而不是AbstractList但它看起来更糟。 我希望保持大部分“像pojo一样”……

看看FXCollections (JDK 7):

 List list = new ArrayList(); list.add("s1"); list.add("s2"); ObservableList observableList = FXCollections.observableList(list); observableList.addListener(new ListChangeListener() { @Override public void onChanged(Change change) { while (change.next()) { if(change.wasAdded()){ System.out.printf("added: %s, from: %d, to: %d%n", change.getAddedSubList(), change.getFrom(), change.getTo()); }else if(change.wasReplaced()){ System.out.printf("replaced: %s, from: %d, to: %d%n", change.getAddedSubList(), change.getFrom(), change.getTo()); } } } }); observableList.add("s3"); observableList.set(1, "s1-new-value"); 

这将导致输出:

 added: [s3], from: 2, to: 3 added: [s1-new-value], from: 1, to: 2 

您可以使用PropertyChangeSuppport之类的东西,也可以自己滚动,例如……

 public class Person { private String name; private final PropertyChangeSupport support; public Person() { this.support = new PropertyChangeSupport(this); } public void addPropertyChangeListener(PropertyChangeListener listener) { support.addPropertyChangeListener(listener); } public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { support.addPropertyChangeListener(propertyName, listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { support.removePropertyChangeListener(listener); } public void setName(String value) { if (name == null ? value != null : !name.equals(value)) { String old = name; name = value; support.firePropertyChange(name, old, name); } } public String getName() { return name; } }