第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全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|