1

最初のコンテンツ ペインにツリーがあるアコーディオン レイアウト コンテナーをレイアウトに追加しました。いいえ、アプリケーションのロード時に 1 つのノードを展開して選択する必要があります (これはモックアップです)。

次に、これをクラスのコンストラクターに追加しました。これは、uibinder レイアウトに対応しています。

widget = uiBinder.createAndBindUi(this);               // everything's bound

accordionLayoutContainer.setActiveWidget(firstPanel);  // OK, expands first pane
tree.getSelectionModel().select(mynode, true);        // no visible effect
tree.setExpanded(mynode, false);                       // no visible effect

ここに何が欠けていますか?状態を設定した後に「何か」のレイアウトを強制する必要がありますか、それともノードを選択して展開する場所が間違っていますか?

4

1 に答える 1

3

解決策を見つけました。setExpandツリーがアタッチされるまで、呼び出しを延期する必要があります。そこでAttachEvent.Handler親ウィジェットに を追加しました。モデルが登録される前にハンドラーが早期に呼び出されるため、ツリーに直接追加しても機能しません。

widget = uiBinder.createAndBindUi(this);               // everything's bound

accordionLayoutContainer.setActiveWidget(firstPanel);  // OK, expands first pane
accordionLayoutContainer.addAttachHandler(new AttachEvent.Handler() {

  @Override
  public void onAttachOrDetach(AttachEvent event) {
    clientsTree.getSelectionModel().select(mynode, true);
    clientsTree.setExpanded(mynode, true);              
  }
});
于 2012-05-16T10:20:32.983 に答える