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