ノードのプロパティを視覚化および編集するために、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 の解決策は、このスレッドから得られます。