Java の標準 API に搭載されている LayoutManager は「融通が利かないし、使いにくい」と思ったことはありませんか?私は以前からそう思っていました。
一般的には、GridBagLayoutManager を使うことでだいたいやりたい事ができるのですが、非常に難解で使いこなすのには苦労します。ただ基本的な考え方などは間違っていないと思うので、これによく似た HTML で使用されている TABLE を参考に TableLayoutManager を実装してみました。
http://cappuccino.jp/keisuken/java/tablelayout/tablelayout-0.3.0.tar.gz からダウンロードできます。
build.xml Ant build file. readme.txt readme text file. license.txt License file. docs/specification.html Specification and reference manual (this file) docs/api/ TableLayoutManager API reference manual src/ TableLayoutManager source. samples/ Sample source files. lib/tablelayout.jar TableLayoutManager package file.
以下の環境で動作します。基本的に JDK 1.1 以上の API を使っていませんので殆どの環境で動作させられるでしょう。
| ランタイム | JDK 1.1 以上 |
|---|---|
| OS | JDK 1.1 以上が動作する OS |
| 確認環境 | Windows 2000, J2SDK 1.4.2_01 Mac OS X, J2SDK 1.4.1_01 |
${tablelayout_home}/lib/tablelayout.jar を CLASSPATH に加えて下さい。それでこのライブラリは使用できます。
必要なランタイムとツールは以下のとおりです。
| ランタイム | J2SDK 1.3.x 以上 |
|---|---|
| ツール | Apache Ant 1.5.x |
JDK 1.3.x 以上 と Ant 1.5.x をインストールしたのち、${tablelayout_home} ディレクトリに移動して、ant を実行してください。
bash-2.05b$ cd tablelayout
bash-2.05b$ ant
Buildfile: build.xml
compile:
[mkdir] Created dir: C:\home\keisuken\tablelayout\classes
[javac] Compiling 2 source files to C:\home\keisuken\tablelayout\classes
[javac] Compiling 4 source files
api:
[mkdir] Created dir: C:\home\keisuken\tablelayout\docs\api
[javadoc] Generating Javadoc
[javadoc] Javadoc execution
[javadoc] パッケージ jp.ne.cappuccino.keisuken.awt のソースファイルを読み込ん
でいます...
[javadoc] Javadoc 情報を構築しています...
...
この例では、Windows 2000 上の Cygwin で実行しています。
レイアウトの属性は以下のとおりです。
| 種類 | 属性 | 内容 | 関連メソッド |
|---|---|---|---|
| Table | column | 桁数 | TableLayoutManager #TableLayoutManager |
| row | 行数 | ||
| halign | 水平方向の位置 (0.0-1.0) | ||
| valign | 垂直方向の位置 (0.0-1.0) | ||
| margin | テーブル周りの隙間 (pixel) | ||
| cellspacing | セル間の隙間 (pixel) | ||
| cellpadding | セル内の隙間 (pixel) | ||
| width | 桁毎の幅 (%) | TableLayoutManager#setWidth | |
| height | 行毎の高さ (%) | TableLayoutManager#setHeight | |
| Cell | width | Component 幅 (0.0-1.0) | TableConstraints #TableConstraints, #set |
| height | Component 高さ (0.0-1.0) | ||
| halign | Component 水平方向の位置 (0.0-1.0) | ||
| valign | Component 垂直方向の位置 (0.0-1.0) | ||
| colspan | 桁の結合数 | ||
| rowspan | 行の結合数 |
HTML の TABLE をイメージしてもらえば理解できると思います。
コーディングの順番は以下のとおりです。
注意:
以下の制限があります。
今のところこれらの制限があっても問題ないでしょう。いづれにしてもそのうち解決するつもりです。
Sample8 の実行結果です。
![]() |
![]() |
| Windows | Mac OS X |
|---|
ライセンスは MIT license に準じます。
The MIT License
Copyright (c) 2003 NISHIMOTO Keisuke
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
何か質問・要望などありましたら keisuken atmark cappuccino.ne.jp 宛てにメールをください。
表と割り切っているので、(HTML に慣れている人は)割と簡単にレイアウトができるのではないでしょうか。今のところ私は満足しています。
表ではできない/できにくいレイアウトも存在するので万能とはいえませんが、階層化することでかなり柔軟にレイアウトできますのでそれなりに重宝すると思っています。是非使ってみてくださいませ。
バグ報告や感想や要望、歓喜の声(あるいは苦情(^^;)なども歓迎します。
GridBagLayout と比較する為に、GridBagSampleX.java というソースファイルも載せました。
このサンプルはレイアウトのみです。