2017-10-25 11 views
0

これは、オブジェクト(名前、数量、イメージ)のリストを持つ1つのRCP Eclipse APP であり、FORループでダウンロードされます。swt(ラベル)コンポーネントの配置が破棄されるのはなぜですか?

この情報がダウンロードされ、オブジェクトの各属性がラベルの付いたAPPに表示されます。例えば

lblName[idx] = ComponentProvider.getLabel(composite, getObject().getName(), 8); 
lblName[idx].setBounds(5, pos, 195, 20); 

lblValue[idx] = ComponentProvider.getLabel(composite, getObject().getValue(), 8); 
lblValue[idx].setBounds(205, pos, 73, 20); 

lblStatus[idx] = ComponentProvider.getLabel(composite, "", 8); 
lblStatus[idx].setBounds(280, pos, 39, 20); 
lblStatus[idx].setImage(StateIconManager.getImageForState(getObject().getImg())); 

これは、これらの3つの属性を整列して表示されます。[名前] [数量] [画像]

これは動作しますが、ここで問題がある:実行時間APPの後ラベルは常に揃えたままになるように

enter image description here

いくつかのアイデア:それはこのようにずれていますか?

+0

これらのビットからは言い難いです。ダイアログ/フォーム/ ...がSWTレイアウトを使用している場合、 'setBounds'呼び出しはレイアウトによってオーバーライドされます。 –

+0

ここで何かできることがあるので、再びオーバーフローすることはありませんが、それは整列していますか? – BEN

+0

あなたは何が起こっているかを知るための十分なコードを表示していません。適切な[mcve]を表示してください。 –

答えて

1

これらのコントロールを含むCompositeにはGridLayoutが使用されているようです。 できませんはのレイアウトで管理されているsetBoundsを使用します。レイアウトによって、境界が計算される境界で上書きされます。

GridLayoutを使用しているので、それぞれのコントロールにGridDataレイアウトデータを設定する必要があります。 GridDataには、cntrolの位置とサイズを制御できる多くのフィールドがあります。

関連する問題