RCPアプリケーションにエクスプローラーを配置し、RowLayoutを使用してさまざまなカテゴリ項目を表示する内部コンポジットを追加しました。エクスプローラの幅を変更すると、カテゴリ項目を新しい行に折り返して、親コンポジットのサイズを拡大します。内容に基づいてSWTレイアウトのサイズを変更(拡大/縮小)する方法
内側のコンポジットをデフォルトで初期化すると、何も起こりません。ラッピングさえしません。私が垂直のスペースをつかむように設定すると、半分のスペースが必要になり、ツリーの残りの半分は残ってしまいます。これは醜いもので、必要なものではありません。ヒントを設定すると、ラップしますが、コンポジットのサイズは決して変更されないため、次の行が隠されます。 resizeイベントリスナーを追加し、内側のコンポジットのサイズを変更しようとしました。それは私がそれをサイズ変更し、すべての行を表示することができますが、その後、ツリーの一部を覆い隠します。私はsetLocationとsetSizeを実行して木自体のサイズやサイズを変更しようとしましたが、無駄な変更はありません。
これをどのように機能させることができますか?私は何が欠けている。必要最低限の高さを使用し、必要以上に調整するレイアウトを求める簡単な方法はありませんか?
ありがとうございました。ここで
コード:
そして、リサイズ後(樹の1行目が隠蔽されていることに気付い):
ここ
innerComposite = new Composite(parent, SWT.NONE);
innerComposite.addListener(SWT.Resize, listenerComp);
GridDataFactory.fillDefaults().hint(10, 30).applyTo(innerComposite);
GridLayoutFactory.fillDefaults().applyTo(innerComposite);
Listener listenerComp = new Listener() {
public void handleEvent(Event event) {
Widget widget = event.widget;
Composite comp = (Composite)widget;
Composite parent = comp.getParent();
Point parentSize = parent.getSize();
Point size = comp.computeSize(parentSize.x, SWT.DEFAULT);
comp.setSize(size);
}
}
あなたは[MCVE]を投稿することができればそれが役立つだろう(http://stackoverflow.com/help/ – Baz