org.eclipse.swt.layout.FormLayoutは他のウィジェットとの相対位置で配置を指定するレイアウトです。各ウィジェットのレイアウト情報はFormDataクラスとFormAttachmentクラスを使用して設定します。
// ウィンドウのタイトルを指定 shell.setText("FormLayout Sample"); // ウィンドウのサイズを指定 shell.setSize(200,100); // FormLayoutに設定 shell.setLayout(new FormLayout()); // ボタン Button button = new Button(shell,SWT.NULL); button.setText("PUSH"); FormData buttonData = new FormData(); buttonData.top = new FormAttachment(0,0); // ウィンドウの上側にはりつく buttonData.right = new FormAttachment(100,0); // ウィンドウの右側にはりつく button.setLayoutData(buttonData); // テキストフィールド Text text = new Text(shell,SWT.BORDER); FormData textData = new FormData(); textData.top = new FormAttachment(0,0); // ウィンドウの上側にはりつく textData.left = new FormAttachment(0,0); // ウィンドウの左側にはりつく textData.right = new FormAttachment(button,0); // ボタンの左側にはりつく text.setLayoutData(textData);
上記のコードを実行すると以下のようになります。ウィンドウのサイズを変更するとテキストフィールドの部分のみが伸縮します。
FormDataはtop、right、left、bottomというプロパティを持っており、それぞれにFormAttachmentクラスのインスタンスを設定することでレイアウト情報の設定を行います。親コンテナに対しての位置を指定する場合、以下のようにしてFormAttachmentオブジェクトを生成します。
new FormAttachment(パーセンテージ,オフセット);
パーセンテージは0〜100で設定します。topまたはbottomの場合は0が上側、100が下側になります。rightまたはleftの場合は0が左側、100が右側になります。オフセットを指定すると、そのピクセル分離れた位置に配置されます。たとえば
// 親コンテナの上側から5ピクセル離れた位置に配置 formData.top = new FormAttachment(0,5); // 親コンテナの右側から5ピクセル離れた位置に配置 formData.right = new FormAttachment(100,-5);
他のウィジェットとの相対位置でレイアウトを指定する場合は以下のようにしてFormAttachmentオブジェクトを生成します。
new FormAttachment(ウィジェット,パーセンテージ,オフセット);
指定方法は第一引数に対象となるウィジェットを指定する以外は親コンテナに対して配置を指定する場合と同じです。
最終更新時間:2004年03月30日 04時30分08秒