
第11回 JVEで編集できないレイアウトを2つ紹介
米持幸寿
2007/4/25
米持先進技術工房 @IT分室では、テクノロジー・エバンジェリスト 米持幸寿氏が、J2EEの最新技術情報を提供します。最新技術の中身をいち早くキャッチアップしたい読者のためのコーナーです。
| 今回の主な内容 ・相対位置で調整するFormLayout ・画面を重ねるレイアウト ― StackLayout |
連載第7回より引き続き、SWTで使用できるレイアウトの詳細について解説していますが、今回はJVEで編集できないレイアウトを2種類紹介します。
FormLayoutは、相対位置でレイアウトを調整していくレイアウトです。残念ながら、JVEでは編集できず、コーディングでの利用となります。
StackLayoutは、JVEで編集できないカスタム・レイアウトですが、日本のアプリケーションには画面遷移型のアプリケーションが多いため、利用する機会は多いと思いますから、解説しておきたいと思います。
編集部注:JVEについては連載第2回を、[SWTで使用できるレイアウトの種類]については連載第6回を、参照してください。
相対位置で調整するFormLayout
FormLayoutは、JVEで編集できないので、コーディングで実装していきます。
Visual Classとして追加したコンポーネントでも、普通のJavaクラスとして追加したコンポーネントから始めても構いません。FormLayoutをCompositeにセットしましょう。
| リスト1 FormLayoutを設定 |
import org.eclipse.swt.layout.FormLayout; |
■ FormDataとFormAttachmentで細かく設定
FormLayoutに載せるコンポーネントには、FormDataを与えてレイアウトを調整していきますが、FormDataにはさらに、FormAttachmentというオブジェクトを付けて与えます。このFormAttachmentオブジェクトが、対象となるオブジェクトのすべての辺ごとに与えられることによって、相対調整されるコンポーネントとの関係を細かく設定していくことができます。
FormDataには、以下のプロパティがあります。
| 表1 FormDataのプロパティ | |||||||||||||||||||||
|
widthとheightが指定されていなければ、部品が自分で大きさを決めます。指定されていれば、その大きさに変更されます。
さらに、FormAttachmentオブジェクトが張り付けられていない部分はレイアウトはいじらないので、部品がその位置を決めますが、張り付けられている場所は、FormAttachmentに指定されている部品への相対位置で自動調整されます。
FormAttachmentには、以下のプロパティがあります。
| 表2 FormAttachmentのプロパティ | ||||||||||||||||||
|
例えば、ウィンドウに1つだけボタンが付いていて、そのボタンの右端が、親のコンポジットの右端−20ピクセルに配置されるように設定してみます。
![]() |
| 図1 ボタンが1つだけ付いた例 |
この場合、以下のコードを記述することになります。
| リスト2 ボタンを追加 |
FormData fd1 = new FormData(); |
fd1は、ボタンに与えられるレイアウト・データです。今回は、ボタンの右端の調整のみを行うので、fd1.rightに親のコンポジット(this)に対するFormAttachmentを作ります。このFormAttachmentのプロパティを変更することで位置合わせの調整ができます。
■ 重なった部品をレイアウトできる
同様に、テーブルをボタンの左端+10ピクセルに合わせ、それ以外を下地のコンポーネントの外側に合わせるようにするには、次のコードを記述します。
| リスト3 テーブルを追加 |
FormData fd2 = new FormData(); |
![]() |
| 図2 テーブルを追加した例 |
ほかのレイアウトと違い、FormLayoutではこの例のように重なった部品をレイアウトすることも可能です。
| 1/2 |
| INDEX | ||
| 第11回 JVEで編集できないレイアウトを2つ紹介 | ||
| Page1 相対位置で調整するFormLayout FormDataとFormAttachmentで細かく設定 重なった部品をレイアウトできる |
||
| Page2 画面を重ねるレイアウト ― StackLayout |
||
米持先進技術工房−@IT分室 バックナンバー
| Java Solution全記事一覧 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


