JDK1.1 のレイアウトと JavaBeans

JDK1.1 でのレイアウトの取り扱いと JavaBeans について説明します。
JDK1.1 のレイアウトに関する部分は JDK 1.02 から基本的には変化ありません。 レイアウトのポリシーを決めるクラスの存在も Containerのレイアウトをコントロールする方法も JDK1.02 と全く同じです。
ただし、レイアウトのクラスの内部の細かい部分でいくつか変更点があります。 LayoutManagerの機能を拡張した新しいインターフェイス LayoutManager2 が 追加されました。BorderLayout,CardLayout,GridBagLayoutは、 正確には LayoutManager2 を実装しています。
また、Conatainerのサブクラスとして新たに ScrollPaneクラスが追加されました。 このクラスは Panelのようにユーザーインターフェイスの部品を直接配置する Containerではありません。 内部に1個だけ他の Componentを表示する仕様になっています。 画面に収まりきらないような大きな CanvasやPanelの一部のみを表示するのに 利用します。 ユーザーは付属のスクロールバーによって表示をコントロールできます。 このような特殊な用途の Containerであるため、 ScrollPaneは LayoutManagerも使用しません。 したがって setLayout()を行っても指定は無視されます。 また、add()で追加できるのはたった1つにすぎません。 (最後に add()で指定されたオブジェクトのみが表示されます。 途中で表示する Componentを切り替えることは可能です。)

今後の Java言語によるアプリケーション開発では、 レイアウトの取り扱いが大きく変わることになるでしょう。 レイアウトの設計は GUI ベースの開発ツールによって行われるのが普通になっているからです。 ごく小規模のアプレットを除けば、コンポーネントのレイアウトを エディターによって直接コーディングすることはなくなっていくでしょう。 もちろん、JDKの awt におけるレイアウトの仕組みは知っておくべきですが、 その細部をいちいち意識してプログラミングすることは少なくなるに違いありません。 開発ツールを利用したアプリケーション開発は既に始まっていますが、 それによって新たな問題が生じる可能性がでてきました。
ユーザーインターフェイスを担当するコンポーネントのデザインや レイアウトの方針などは、開発ツールに大きく依存する傾向があるということです。 特にクラスの再利用の観点から見ると、 特定の開発ツールでしか利用できないクラスが生じてしまうのは好ましいこと ではありません。 かといって、特定の開発ツールを標準として固定化してしまうのも困難ですし、 自由度を減らす結果になります。
そこで登場してきたのが JavaBeans のプロジェクトです。 Java Beans は従来の awt コンポーネントをより抽象的に 取り扱う新しい標準規格を作ろうとしています。 その規格に沿って新しいクラスを設計することを共通のルールとし、 開発ツール間の互換性を保つのが目的です。 そのカバーする範囲は、コンポーネントのデザイン、レイアウト、そして イベント処理の扱いなど広い範囲に及ぶことになります。 JDK1.1 の java.awt パッケージも、JavaBeans の規格に対応する機能を 提供する方向に拡張されています。 (たとえば JDK1.1から Componentのメソッド名が setSize(),getSize()などのように変更されたのも、JavaBeansの規格に 適合させるためなのです。)