Я использую компонент 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 взято из этой темы а>.