RowLayoutは、Row(行の)Layout(レイアウト)のことです。 つまり、横一列のレイアウトです。 一列というと、FillLayoutを思い浮かべてしまいますが、その振る舞いは全く異なります。 RowLayoutが表示するコントロールの大きさは、静的(サイズが不変)です。
RowLayoutの作成時には、SWT.HORIZONTALとSWT.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には、いくつかのフィールド値が存在します。 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は細かな設定ができるようになっています。