<更新記録>
2007年 12月 11日
作成

姉妹サイト検索 Web検索


RowLayout

RowLayout

RowLayoutは、Row(行の)Layout(レイアウト)のことです。 つまり、横一列のレイアウトです。 一列というと、FillLayoutを思い浮かべてしまいますが、その振る舞いは全く異なります。 RowLayoutが表示するコントロールの大きさは、静的(サイズが不変)です。

RowLayoutの作成時には、SWT.HORIZONTALSWT.VERTICALプロパティを指定できます。 SWT.HORIZONTALを指定すると、横方向にコントロールを並べます。 SWT.VERTICALを指定すると、縦方向に並べることができます。

サンプルプログラム

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;

public class RowLayoutComposite extends Composite {
	public RowLayoutComposite(Composite parent) {
		super(parent, SWT.NONE);
		
		RowLayout layout = new RowLayout(SWT.HORIZONTAL);
		setLayout(layout);
		
		RowData rowData = new RowData(60, 30);
		for (int i=0 ; i<10 ; i++) {
			Button button = new Button(this, SWT.NONE);
			button.setText("button " + i);
			// ボタンのサイズを設定
			button.setLayoutData(rowData);
		}
	}
}
RowLayoutのCompositeの中のControlのサイズは、すべてCompositeが決定します。 なので、例えばbutton.setSize(int,int)メソッドを呼び出しても、サイズは変わりません。 Controlのサイズを変更したければ、RowDataインスタンスをbutton.setLayoutData(Object)で設定します。

細かな部分の設定ができる

RowLayoutには、いくつかのフィールド値が存在します。 RowLayoutで表現されたControlは、画面の右端まできたら、その下の左端に折り返されますが、 この動作は、wrapフィールドで決定されます。trueだと折り返しが有効で、falseだと折り返されずに はみ出た部分は描画されません。

他にもRowLayoutには、いくつかのフィールドがあります。

boolean justify       // Compositeの領域に合わせてControl同士のマージンを
                      // 可変にするかどうか
int marginBottom      // Compositeの下辺からControlまでのマージン
int marginLeft        // Compositeの左辺からControlまでのマージン
int marginRight       // Compositeの右辺からControlまでのマージン
int maringTop         // Compositeの上辺からControlまでのマージン
boolean pack          // すべてのControlのサイズを、一番大きいものに合わせて
                      // すべて一律にするかしないか
int spacing           // Cointrol同士の幅
int type              // 横並びか縦並びか(SWT.HORIZONTAL/SWT.VERTICAL)
boolean wrap          // 右端で折り返すかどうか
これらの値を変えることで、RowLayoutは細かな設定ができるようになっています。


Powered by VeryEasyCMS