2016-12-20 11 views
0

私はEclipse RCPを使っています。そこで私は次のように私が実装されている標準的な方法createPartControl(コンポジット親)との見解を持っている:createContentでコンポジットの子を直ちに表示してSWTに再度ロードする方法

public void createPartControl(Composite parent) { 

    this.parent = parent; 

    createContent(); 
} 

()、コンポジット親はいくつかの要素(例えば、何かの状態を持つテーブル)を取得しますこれは私が更新したいものです。したがって、私は更新ボタンを持っています。クリックすると親の子をすべて削除し、createPartControl(親)メソッドを再度実行する必要があります。

これは、そのために私の現在のコードです:

buttonUpdate = new Button(parent, SWT.NONE); 
buttonUpdate.setText("Update"); 
GridData gridData = new GridData(80, 30); 
buttonUpdate.setLayoutData(gridData); 
buttonUpdate.addListener(SWT.Selection, new Listener() { 
    public void handleEvent(Event e) { 
     switch (e.type) { 
     case SWT.Selection: 
      for (Control control : parent.getChildren()) { 
       control.dispose(); 
      } 
      createPartControl(parent); 
      break; 
     } 
    } 
}); 

私は自分のアプリケーションを起動し、更新ボタンをクリックすると、ウィンドウが空になりますが、新しいコンテンツは表示されません。私がアプリで別のビューを開いた後、元に戻すと、更新されたコンテンツが表示されます。すぐに新しいコンテンツを表示するにはどうすればいいですか?

答えて

0

親コンポジットを再度レイアウトする必要があります。 createPartControl呼び出し後

コール

parent.layout(true, true); 

+0

申し訳ありませんが、私たちの投稿は時間的に重複しています。しかし、ありがとう! – LCP

0

私はそれを得ました!私は見つけたthis page

parent.layout(true, true); 

私に役立ちます。

関連する問題