Container

Containerクラスは Componentクラスの直接のサブ・クラスです。 java.awtパッケージに含まれます。 Containerクラスは、 内部に他のコンポーネントのオブジェクトをレイアウトする機能を提供します。 Containerクラスは他のクラスのスーパー・クラスとなりますが、 自身はオブジェクトを生成しません。 Appletも Containerのサブ・クラスであり、 レイアウトに関する重要なメソッドは Containerクラスの中で定義されています。
Containerクラスには publicなフィールドは存在しません。 しかし、自分が管理すべき内部のComponentのオブジェクトや レイアウトのポリシーを決定する LayoutManagerのオブジェクトなどを 内部に記憶しています。それらには、下記の publicなメソッドを通じて アクセスします。
また、オブジェクトのサイズや色などの基本的な性質は、 Componentクラスから継承し内部に記憶しています。

Containerクラスのメソッド

Containerクラスは abstractなクラスであるため publicなコンストラクタは存在しません。 引数の区別もすると全部で 42個の publicなメソッドが定義されています。 そのうちのいくつかは Componentクラスのメソッドを再定義したものです。 (自分自身だけでなく内部のコンポーネントにも操作を行うため) メソッドの目的ごとに以下の項目のようにグループ分けして解説します。

  1. Container自身のサイズを調整するメソッド
  2. 内部のコンポーネントの管理のためのメソッド
  3. 内部のコンポーネントのレイアウトを操作するメソッド
  4. Container自身と内部のコンポーネントの描画に関連するメソッド
  5. イベント処理に関連するメソッド
  6. その他のメソッド

Container自身のサイズを調整するメソッド

Containerのオブジェクトの最適のサイズと許される最小のサイズを返します。 これらのメソッドの意味や取り扱いは Componentクラスと同じです。 Containerクラスの場合は、内部のコンポーネントによってサイズが左右されるため 再定義されています。

内部のコンポーネントの管理のためのメソッド

getComponentCount()と countComponents()は内部にあるコンポーネントの個数を返すメソッドです。 どちらも機能は同じですが、 JDK1.1では getComponentCount()を使用することが推奨されています。
getComponent()は内部にあるコンポーネントの N番目のコンポーネント のオブジェクトを返すメソッドです。
getComponents() は内部にあるコンポーネント全てをコンポーネントの配列 として返すメソッドです。
isAncestorOf()は指定されたコンポーネントが、このContainerの内部に あるかどうかを返します。階層的に何層になっていても、内部にあるならば trueが返ります。
getComponentAt()と locate()メソッドは与えられた座標に存在するコンポーネントを返します。 どちらも機能は同じですが、 JDK1.1では getComponentAt()を使用することが推奨されています。

内部のコンポーネントのレイアウトを操作するメソッド

add()メソッドは、Containerオブジェクトの内部にコンポーネント を追加します。引数に int型の引数を指定すると、 その番号に相当する部分に挿入されます。 第1引数に与えられる Stringクラスのデータ、 第2引数に与えられる Objetctクラスのデータ(任意のクラスのオブジェクト)は、 コンポーネントの LayoutManagerに伝えたい拘束条件を表します。 JDK1.1では add( Component, Object )の形式を用いるのが推奨されています。

remove()は指定したコンポーネントもしくは指定したインデックスに 相当するコンポーネントをContainer内部から取りはずすメソッドです。
removeAll()はContainerのオブジェクト内の全てのコンポーネントを 取りはずすメソッドです。

doLayout()と layout()メソッドは Containerのオブジェクト内部のレイアウトを実行します。 どちらも機能は同じですが、 JDK1.1では doLayout()を使用することが推奨されています。
getAlignmentX(),getAlignmentY()は、 X軸方向、Y軸方向のそれぞれについて、 中心軸の位置を 0.0 から 1.0 までの float型の値で返します。 java.awtパッケージで提供されているレイアウトのポリシーでは、 いずれの場合も値 0.5 を返しています。
getInsets()と insets()メソッドは Containerの Insetsクラスのオブジェクトを返します。 どちらも機能は同じですが、 JDK1.1では getInsets()を使用することが推奨されています。 なお、Insetsはレイアウトの対象となる領域を表す単純なクラスです。
コンポーネントがレイアウトされ直すことが必要がない状態が "valid"、 逆にレイアウトされ直す必要がある状態が "invalid"です。 validate()メソッドは、オブジェクト自身および内部の全てのコンポーネント が validな状態になるように処理を再起的に行います。 invalidate()メソッドは、オブジェクト自身を invalidな状態にした上で、 自分を含む外側のオブジェクトの invalidate()メソッドを再起的に呼び出します。
Containerのオブジェクトのレイアウトの方針を操作するための メソッドです。getLayout()は現在使用中のレイアウトのオブジェクトを返します。 setLayout()は Containerのオブジェクトにレイアウトのオブジェクトを設定します。
やりとりされるレイアウトのオブジェクトは、 LayoutManagerインターフェイスをインプリメントしたクラスのオブジェクトで ある必要があります。awtパッケージには5種類のクラスが用意されています。

Container自身と内部のコンポーネントの描画に関連するメソッド

paint()はスーパークラスである Componetで定義された paint()メソッドを 呼び出した後、内部のコンポーネントの paint()メソッドを再起的に呼び出します。
print()はスーパークラスである Componetで定義された print()メソッドを 呼び出した後、内部のコンポーネントの print()メソッドを再起的に呼び出します。
paintComponents()は、内部のコンポーネントの printAll()メソッドを再起的に呼び出します。
paintComponents()は、内部のコンポーネントの printAll()メソッドを再起的に呼び出します。
現行のバージョンでは、Componentのデフォルトの定義では paint()とprint()に機能の差はありません。

イベント処理に関連するメソッド

addContainerListener()は ContainerEvent を処理するCintainerListenerのオブジェクトの登録を行います。
removeContainerListener()は ContainerEvent を処理するアダプターのオブジェクトの削除を行います。
deliverEvent()は内部のコンポーネントにイベントの伝達を行います。 JDK1.0との互換性の保持のために publicなメソッドとして残されていますが、 JDK1.1では別のメソッドによって内部的に処理されます。

その他のメソッド

list()メソッドは、主にデバッグのために使用します。 働きは Componentクラスで定義されたものと同じですが、 Containerクラスとして使用頻度の高い情報を与えるように再定義されています。 たとえば、 自分自身の変数名だけではなく 内部に含まれるコンポーネントの変数名も一段深くインデントして出力してくれます。
addNotify()およびremoveNotify()は、コンポーネントのデザインに独自の実装を 登録する(削除する)メソッドですが、 Containerでは自分自身だけでなく、内部のコンポーネントの addNotify()もしくは removeNotify()を再起的に呼び出します。