FormLayout の FormData がどのように機能するかを誰かに説明してもらえますか? FormAttachment コンストラクターとそのパラメーター (分子、オフセット、分母) を理解しようとしています。それらの1つ、2つ、またはすべてのパラメーターのみが必要になるのはいつですか...また、ボタンやラベルなどのウィジェットを追加するグループ(またはコンポジット)がある場合は、 FormData、グループには FormLayout も必要ですか? 帳票レイアウトでグループの幅を指定してみたが変化なし
1 に答える
FormAttachment にはいくつかの異なるコンストラクターがあり、通常は次の 2 つを使用します。
new FormAttachment (int numerator, int offset) - 整数パラメーターが 2 つしかない場合、最初のパラメーターは親の端からのパーセンテージを表します。FormAttachment を挿入する FormData オブジェクトのスロット (FormData.top、data.bottom、data.left、および FormData.right) によって、どのエッジが決定されます。
new FormAttachment (コントロール コントロール、int オフセット) - 親に対してオブジェクトを配置する代わりに、別の子オブジェクトの隣にオブジェクトを配置します。これは前のコンストラクターと連携して機能するため、1 つの要素を親に対して効果的に "固定" し、アンカーを基準にして他の要素を配置してレイアウトを構築します。これにより、レイアウト全体を再構築することなく、要素をレイアウト全体に簡単に移動および挿入することもできます。
他はこの2つのテーマのバリエーションです。FormAttachment (int 分子、int 分母、int オフセット) は、2 つの整数パラメーターを持つ FormAttachment と同じですが、2 つの場合、分母は単に "100" になります。つまり、分子がパーセンテージに変わります。ただし、(1, 2, 0) のように 1/2 の幅で、(1, 3, 0) のようにスペースの 1/3 のように言うこともできます。
グループにレイアウトを定義する必要があるかどうかについて、あなたが何を意味するのかわかりませんが、一般に、子要素を表示するには、すべての親 Composite にレイアウトを定義する必要があります。親のサイズ変更に合わせて要素のサイズを変更したい場合、1 つのオプションは、要素の左側と右側の両方に子をアタッチすることです。
FormData formData = new FormData();
formData.left = new FormAttachment (0, 0); // Attach at the 0% left with 0 offset
formData.right = new FormAttachment (100, 0); // Attach at the 100% right with 0 offset
Eclipse サイトには、FormLayout を示す優れたスニペットがたくさんあります。チェックしてください。
http://www.eclipse.org/swt/snippets/
FormLayout セクションまで下にスクロールします。