我正在使用 PropertySheetView 组件来可视化和编辑节点的属性。此视图应始终反映对象的最新属性;如果在另一个进程中对对象进行了更改,我想以某种方式刷新视图并查看更新的属性。
我能够做到这一点的最好方法如下(利用EventBus库发布和订阅对象的更改):
public DomainObjectWrapperNode(DomainObject obj) {
super (Children.LEAF, Lookups.singleton(obj));
EventBus.subscribe(DomainObject.class, this);
}
public void onEvent(DomainObject event) {
// Do a check to determine if the updated object is the one wrapped by this node;
// if so fire a property sets change
firePropertySetsChange(null, this.getPropertySets());
}
这行得通,但是当工作表刷新时,我在滚动窗格中的位置丢失了;它将视图重置到列表的顶部,我必须向下滚动到刷新操作之前的位置。
所以我的问题是,有没有更好的方法来刷新节点的属性表视图,特别是刷新时我在属性列表中的位置不会丢失?
firePropertySetsChange 的解决方案来自这个线程。