コンテナについて

コンテナは、他のコンポーネントを保持し、管理します。次の2つの一般的なコンテナがあります。

JDeveloperでのUI設計作業は、すべてコンテナ内で行われます。コンテナもコンポーネントで、他のコンポーネントと同様に、プロパティの取得および設定、メソッドのコール、イベントへの応答により、対話できます。

コンテナではないサブクラスの複合コンポーネントにも、UIコンポーネントを含めることができます。たとえば、「新規アプリケーション」ダイアログで作成したapplication.javaに、構造ウィンドウでパネルやダイアログ・ボックスをドロップすることで、コンポーネントを含めることができます。

コンテナに非UIコンポーネントのみが含まれる場合、コンテナのサブクラスである必要はないため、実行時には表示されません。その例がDataModuleで、これは一連のデータ・コンポーネントをインスタンス化して相互に結び付け、複数のUIコンテナ内のビジュアルUIコンポーネントで使用できるようにするためのものです。

ウィンドウ

ウィンドウは、スタンドアロンの最上位コンテナ・コンポーネントで、枠、タイトル・バー、メニュー・バーがありません。ウィンドウはポップアップ・ウィンドウの実装に使用できますが、通常は、次のようなウィンドウのサブクラスをUIに使用します。

ウィンドウ 説明

フレーム

枠およびタイトルを持つ最上位のウィンドウです。フレームは、制御メニュー、ウィンドウの最小化および最大化ボタン、ウィンドウのサイズ変更コントロールなど、標準のウィンドウ・コントロールを備えています。メニュー・バーを含めることもできます。

ダイアログ・ボックス

フレームに似たポップアップ・ウィンドウですが、親を必要とします。ダイアログ・ボックスは、ユーザーからの入力の取得、または警告メッセージの表示に使用されます。メニュー・バーを含めることもできます。ダイアログ・ボックスは通常一時的なもので、次のタイプのいずれかです。

Modal: ダイアログ・ボックスが画面から消えるまで、ユーザーはアプリケーション内の他のウィンドウに入力できません。

Modeless: ユーザーは、ダイアログ・ボックスとアプリケーションの両方に情報を入力できます。

パネル

パネルは、枠もキャプションもない単純なUIコンテナで、ボタン、チェックボックスおよびテキスト・フィールドなど、他のコンポーネントをグループ化するために使用されます。パネルは、フレームまたはダイアログなど、他のUI内に埋め込まれます。パネルは、別のパネル内にネストすることもできます。

パネル 説明

アプレット

パネルのサブクラスで、HTMLページに埋め込み、インターネット・ブラウザまたはアプレット・ビューアで実行するプログラムの構築に使用されます。アプレットは、パネルのサブクラスであるため、コンポーネントを含めることができますが、枠やキャプションはありません。

軽量Swingコンテナ

JDeveloperのコンポーネント・パレットの各ページから選択できる軽量Swingコンテナには、JMenuBar、JPopupMenu、JSplitPane、JScrollPane、JTabbedPane、JToolbar、JTextPane、およびJEditorPane(最後の2つはコンポーネント・パレットの「Swing」ページに表示されます)があります。どれもJComponentのサブクラスです。これらのコンテナに他のコンテナやコンポーネントを追加し、コンポーネントとそのコンテナを様々に組み合せてインタフェースを作成できます。

軽量コンテナ 説明

メニュー・バー

JDeveloperでは、メニュー・エディタを使用してメニュー・バーにメニューを追加します。ユーザーがJMenuオブジェクトを選択すると関連付けられたJPopupMenuが表示され、ユーザーはそこからいずれかのJMenuItemを選択できます。

ポップアップ・メニュー

画面にポップアップし一連の選択肢を表示する小さなウィンドウで、メニュー・エディタを使用してJDeveloperで作成します。JPopupMenuは、ユーザーがメニュー・バー上の項目を選択したときに表示されるメニューに使用します。また、ユーザーがあるメニュー項目を選択すると表示される、サブ・メニューにも使用します。JPopupMenuは、たとえばユーザーがある領域で右クリックしたときなど、メニューを表示する必要のあるあらゆる箇所で使用できます。

2分割ペイン

ユーザーが自由に移動できる境界線で左右または上下に分割された、2つのペインを扱います。どちらのペインにコンポーネントを追加するかを選択できます。コンポーネントはleftComponentrightComponent、またはtopComponentbottomComponentのプロパティで指定します。これらのプロパティのうちLeftはTopに、RightはBottomに相当するため、配置を変更しても既存のコードをそのまま使用できます。同じペインに続けてコンポーネントを追加すると、新しいオブジェクトでペインの内容が置き換えられます。

スクロール・ペイン

複数のJScrollBarと1つのJViewportで構成されます。JViewPortは、テキスト・ファイルなどのデータソースへのウィンドウ(ビューポート)を提供します。データソースは、JViewportビューによって表示されるスクロール可能なクライアント(データ・モデル)です。スクロール可能なクライアントにはどのコンポーネントも使用できますが、JScrollPaneコンテナに追加するのではなくコンポーネント・パレットからコンポーネントをドロップした場合、JDeveloperではそのコンポーネントはコンストラクタの一部として指定されます。

スクロール・バーとビューポートの他に、JScrollPaneには列ヘッダーと行ヘッダーも表示できます。これらはどちらもJViewportオブジェクトで、rowHeadercolumnHeaderのプロパティで指定します。列ヘッダー・ビューポートは、メインのビューポートの左右のスクロールに応じて、自動的に左右にスクロールします。(ただし上下にスクロールすることはありません。)行ヘッダーも同様の動きをします。

メインのビュー・ポートの周囲に境界線を追加するには、viewportBorderプロパティを使用します。

タブ・ペイン

完全に重なり合う複数のパネルを扱います。ユーザーは、パネルに付けられた(ファイル・フォルダのタブのような)タブをクリックして、表示するパネルを選択します。JDeveloperでタブを追加するには、タブ・ペインにコンポーネント・パレットからJPanelをドロップします。tabPlacementプロパティで、コンテナの上、下、左、または右にタブを配置できます。

ツールバー

よく使用される処理やコントロールを表示するのに便利なコンポーネントです。ユーザーは、(floatableプロパティがFalseに設定されていない場合)ツールバーをウィンドウの外側にドラッグして独立したウィンドウとして表示できます。この操作が正しく行われるようにするには、レイアウト・マネージャにBorderLayoutを使用しているコンテナの1辺にJToolBarインスタンスを追加し、他の3辺には何も追加しないことをお薦めします。


コンテナの作成
コンテナ内のコンポーネントの使用
メニューの使用

アプレットの使用
レイアウト・マネージャの使用
レイアウト・プロパティによるUIのプロトタイプ作成

Swingコンテナの詳細は、次のjava.sun.comのWebページを参照してください。

http://java.sun.com/products/jfc/tsc/articles/containers/index.html

Swingコンポーネントの詳細は、次のjava.sun.comのWebページを参照してください。

http://java.sun.com/products/jfc/tsc/articles/component_gallery/index.html