第9回 SWTのレイアウトはRowLayoutで右へ倣え!

米持幸寿
2007/1/11

米持先進技術工房 @IT分室では、テクノロジー・エバンジェリスト 米持幸寿氏が、J2EEの最新技術情報を提供します。最新技術の中身をいち早くキャッチアップしたい読者のためのコーナーです。

 前々回よりSWTで使用できるレイアウトの種類について紹介していますが、今回紹介するRowLayoutは、上に載せられた部品を右方向、または下方向へ順番に並べ、改行しながら配置します。

編集部注:[SWTで使用できるレイアウトの種類]については連載第6回を参照してください。

まずは、部品を順番に配置しよう

 これまでと同様に、以下の手順で、コンポーネントを準備しましょう。

  • Javaパースペクティブを開く
  • Javaプロジェクトを作成する
  • Javaパッケージを作る
  • SWTのCompositeを指定して「Visual Class」を追加する

 前回と同じように、LayoutプロパティーをRowLayoutに変更してください。

図1 RowLayoutの設定

 RowLayoutの特徴は、部品が「ある方向に向かって」並べられる、というものです。前回のFillLayoutと似ていますが、違うのは、部品の大きさが外側(下地)のCompositeを埋めるように広げられる、という考え方をせず、部品が持っている大きさで順次並べられる、という点です。さらに、自動改行などの機能を持っています。

 取りあえず、CompositeのLayoutをRowLayoutにし、Label、Text、Buttonを順番に落としてみたのが、図2です。下の段の「OK」と「CANCEL」のボタンは、本来右に配置されるところが、幅が足りないため改行しています。

図2 部品を並べたところ

  この状態からプロパティーを順次変更してその意味を確認していきましょう。ツールバーのボタンを押して、「Customize Layout」ウィンドウを開いてください。

図3 Customize Layoutウィンドウ

方向の変更を行う

 「Row Orientation(行の方向)」はデフォルトで「Horizontal(水平方向)」となっています。「Vertical」をクリックすると、部品が縦に順番に並ぶようになります。

図4 Verticalにセット

 方向をHorizontalに戻して、「Row Options」のフラグをチェックしてみましょう。

1. Fillフラグ

 Fillフラグは、部品の高さ(Vertical のときは、幅)を均一にするためのオプションです。並べられている部品の中で最も大きなものに合わせられます。デフォルトではオフになっています。

図5 Fillフラグの働き

2. Packフラグ

 Packフラグは、上に載っている部品が、自分の都合のよい大きさになるためのフラグです。デフォルトではオンになっています。オフに切り替えると、すべての部品が一番大きなものに合わせられます。

図6 Packフラグの働き

 実は、FillとPackは同じような働きをするフラグです。(オンとオフが逆ですが)Fillがオフだと部品は自分の大きさを自分で決めます。オンになると最も大きなものにそろえられます。Packがオンだと、部品は自分の大きさを自分で決めますが、オフになると、最も大きなものにそろえられます。

3. Justifyフラグ

 Justifyフラグは、部品を均一に中央寄せで配置するフラグです。デフォルトではオフになっています。

図7 Justifyフラグの働き

4. Wrapフラグ

 Wrapフラグは、改行するかどうかを決めるものです。デフォルトではオンになっています。オフにすると、下地のCompositeの大きさが足りなくても改行しないので、はみ出してしまいます。

図8 Wrapフラグの働き

 FillLayoutでは幅が足りない場合、部品を無理やり小さくして詰め込みますが、RowLayoutではそういうことは起こりません。部品に必要な大きさは部品自体が計算し(PreferedSizeといいます)、それを下回る大きさにはしないような動作をします。

間隔を調整するには?

 部品と部品の間隔の調整は、「Customize Layout」ツールの「Spacing」の数値で調整します。図9のような設定にしたCompositeでのスペースの取り方を図10で説明しています。

図9 数値を設定

図10 間隔の調整

 また、HeightとTop、WidthとLeftは合計値が使われるので、注意してください(現在のRowLayoutでは、どうもRightとBottomの値が働かないように思います)。

筆者プロフィール
米持幸寿(よねもち ゆきひさ)
1987年に日本アイ・ビー・エム入社。メインフレームOS、ミドルウェアの障害対応、障害解析ソフトウェアの開発、ワークフローシステム開発、オブジェクト指向開発、Web開発などを経験。2000年より、ソフトウェアのテクノロジー・エバンジェリストとして活動中。


米持先進技術工房
テクノロジー・エバンジェリストとして活躍する米持氏が主催する、J2EEの最新技術情報を提供するWebサイト。
http://www-6.ibm.com/jp/developerworks/tips/ytech/


Java Solution全記事一覧



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間