TableLayoutManager 仕様書

2003.11.11 NISHIMOTO Keisuke.
Version 0.3.0

1 概要

Java の標準 API に搭載されている LayoutManager は「融通が利かないし、使いにくい」と思ったことはありませんか?私は以前からそう思っていました。

一般的には、GridBagLayoutManager を使うことでだいたいやりたい事ができるのですが、非常に難解で使いこなすのには苦労します。ただ基本的な考え方などは間違っていないと思うので、これによく似た HTML で使用されている TABLE を参考に TableLayoutManager を実装してみました。

2 使い方

2.1 ダウンロード

http://cappuccino.jp/keisuken/java/tablelayout/tablelayout-0.3.0.tar.gz からダウンロードできます。

2.2 パッケージ内容

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.

2.3 動作環境

以下の環境で動作します。基本的に 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

2.4 インストール

${tablelayout_home}/lib/tablelayout.jar を CLASSPATH に加えて下さい。それでこのライブラリは使用できます。

2.5 ビルド

必要なランタイムとツールは以下のとおりです。

ランタイム 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 で実行しています。

2.6 レイアウト属性

レイアウトの属性は以下のとおりです。

種類 属性 内容 関連メソッド
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 をイメージしてもらえば理解できると思います。

2.7 プログラミング

コーディングの順番は以下のとおりです。

  1. TableLayoutManager#TableManager でテーブル属性 (column, row, halign, valign, margin, cellspacing, cellpadding) を設定して生成する
  2. TableConstraints#TableConstraints でセル属性 (width, height, halign, colspan, rowspan) を設定して生成する
  3. 親 Container に add(Component comp, TableConstraints cons) して追加する
  4. 以上の繰り返し

注意:

2.8 制限

以下の制限があります。

  1. 桁数(column), 行数(row) は変えることが出来ません
  2. add した Component を削除することはできますが、再定義はできません。この場合は、一回削除した後、TableLayoutManager#setPosition で列と行を設定して add しなおしてください

今のところこれらの制限があっても問題ないでしょう。いづれにしてもそのうち解決するつもりです。

2.9 実行サンプル

Sample8 の実行結果です。

Windows Mac OS X

3 ライセンス・免責事項・連絡先

3.1 ライセンス

ライセンスは 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.

3.2 免責事項

3.3 連絡先

何か質問・要望などありましたら keisuken atmark cappuccino.ne.jp 宛てにメールをください。

4 最後に

表と割り切っているので、(HTML に慣れている人は)割と簡単にレイアウトができるのではないでしょうか。今のところ私は満足しています。

表ではできない/できにくいレイアウトも存在するので万能とはいえませんが、階層化することでかなり柔軟にレイアウトできますのでそれなりに重宝すると思っています。是非使ってみてくださいませ。

バグ報告や感想や要望、歓喜の声(あるいは苦情(^^;)なども歓迎します。

Appendix

A1 サンプル

GridBagLayout と比較する為に、GridBagSampleX.java というソースファイルも載せました。

このサンプルはレイアウトのみです。

A2 API リファレンス

TableLayoutManager API リファレンス

A3 履歴

A4 ToDo