この章では、JavaBeansテクノロジに対するOracle JDeveloperのサポートについて説明します。
この章には次の項が含まれます:
JavaBeansコンポーネント・テクノロジにより、Javaオブジェクトのデータ取得、永続性および操作に対して独自のフレームワークを実装できます。JavaBeansテクノロジは、JavaアプレットおよびJavaクライアント・アプリケーションのビルドに再利用可能なソフトウェア・コンポーネントを作成するために使用できます。Java EEアプリケーションでは、アプレットおよびアプリケーション・クライアントは、Web層コンポーネントを介してビジネス層コンポーネントと直接または間接的に通信できます。たとえば、ブラウザで実行されているクライアントは、JSPページまたはサーブレットを介してビジネス層と通信します。
JavaBeansコンポーネントはJava EE仕様ではJava EE Webコンポーネントとみなされませんが、JavaBeansコンポーネントは、サーバー・コンポーネントとクライアント層のアプリケーション・クライアントまたはアプレット間、またはサーバー・コンポーネントとバックエンドのデータベース間のデータ・フローを処理するために使用されます。
JavaBeansの基本的な概念、JavaBeansの作成、Beanの構成要素など、JavaBeansの詳細は、http://download.oracle.com/javase/tutorial/javabeans/
を参照してください。チュートリアルには、簡単なBeanの記述、Beanのプロパティ、イベントの操作、その他に関する演習も含まれています。
JavaBeansは、Swing GUIビルダーでプログラムのビルドに使用されるJava構成要素です。各JavaBeanは、ユーザー・インタフェース・オブジェクト、データ対応コントロールまたはシステム機能などのプログラム要素を表します。これらの要素を選択および連結してプログラムを構築します。
今後のUI設計作業の高速化を図るために、「コンポーネント」ウィンドウに追加したり、変更なしで(または軽微な変更のみで)再利用できるJavaBeanコンポーネント(ツールバー、ステータス・バー、チェック・ボックス・グループまたはダイアログ・ボックスなど)を作成します。
JavaBeansは、trueオブジェクト指向プログラミング(OOP)の観念におけるオブジェクトです。trueオブジェクトであるため、JDeveloperコンポーネントには次の特徴があります。
一部のデータ・セットおよびデータアクセス機能のカプセル化。
スーパークラスからのデータおよび動作の継承。
共通スーパークラスから導出された他のオブジェクトと置き換えても同じように機能する多相性。
各コンポーネントは、ウィンドウやダイアログ・ボックス、データベース内のフィールドまたはシステム・タイマーなどの一部のプログラム要素をカプセル化します。ビジュアル・コンポーネントは、最終的にjava.awt.Component
またはそこから導出される他の一部のクラス(javax.swing.Panel
など)を拡張する必要があります。非ビジュアルJavaBeansコンポーネントではこれは必要ありません。
JDeveloperで認識および使用されるためには、コンポーネントがJavaBeans仕様に準拠している必要があります。
プログラムで役立つために、JavaBeanは、その他のコンポーネントにより操作またはこれらのコンポーネントと対話できる手段を提供する必要があります。JavaBeansは、プロパティ、メソッドおよびイベントを定義することでこの要件を満たします。
すべてのコンポーネントには、プロパティ、メソッドおよびイベントが組み込まれています。コンポーネントが提供する一部のプロパティ、メソッドおよびイベントは、実際には祖先のクラスから継承されます。つまり、これらの要素をその他のコンポーネントと共有することを意味します。たとえば、UIコンポーネントはすべて、コンポーネントの背景色を表すbackground
というプロパティを継承します。各コンポーネントは、独自の一意のプロパティ、メソッドおよびイベントを導入することもできます。たとえば、Swingチェックボックス・コンポーネントにはselected
というプロパティがあり、このコンポーネントが初期状態で選択されて表示されるかどうかを示します。
GUIビルダーでは、イベントは主としてイベント処理メソッドとして表示されます。このイベント処理メソッドは、コンポーネントが含まれているクラスに実装する必要があります。たとえば、NewJFrame
というコンテナにjButton1
というボタンがあり、エンド・ユーザーがjButton1
をクリックしたときに動作が発生するようにしたいとします。
イベント処理メソッドを実装する手順は次のとおりです。
NewJFrame
エディタでjButton1
を選択します。
「プロパティ」ウィンドウで、Eventsノードを開きます。使用可能なイベントが表示され、actionPerformed
が、ボタンを押したときに生成されるイベントです。
actionPerformed
の横のフィールドから、ハンドラのデフォルト名、jButton1ActionPerformed
を選択します。
JDeveloperはNewJFrame
のソース・ビューに切り替わり、そのイベントの発生時にコールされるイベント処理メソッドがNewJFrame
に挿入されます。
メソッドのデフォルト名はjButton1ActionPerformed()
です。
ボタンが押されたときに応答するコードをメソッドに追加します。
エンド・ユーザーに対して、「プロパティ」ウィンドウの「イベント」ページに表示されるjButton1
のすべての潜在的イベントが表示されます。コンポーネントの作成者は、コンポーネント・クラスを作成する際に、そのクラスで生成されるすべてのイベントが「プロパティ」ウィンドウに表示されるようにする責任があります。Beanを使用するためにエンド・ユーザーに必要なことは、イベント処理メソッドのコードを記述することのみです。
バックグラウンドで、JDeveloperはイベント・リスニングの他の側面を処理する追加コードもFrame1.java
ファイルに生成します。
ActionListener
インタフェースを実装するアクション・アダプタの匿名の内部クラスを生成します。
これによってFrame1
でのクラスがインスタンス化されます。
button1.addActionListener()
をコールすることにより、自分自身をbutton1イベントのリスナーとして登録します。
このコードはすべてソース・ビューに表示されますが、主たるタスクは、イベント発生時にアクション・アダプタによってコールされるイベント処理メソッドを記述することです。
「リスナー生成スタイル」プロパティの説明。そのデフォルト値はSwing GUIビルダーのプリファレンスに含まれていて、ヘルプですでに説明済です。このデフォルト値は、新規に作成されたGUIフォームに使用されます。この値は、フォーム別に変更可能です。GUIフォームを開き、「構造」ウィンドウでこの値のrootノードを選択し、さらに「コード生成」プロパティで「リスナー生成スタイル」プロパティを設定します。
JDeveloperによるアダプタ・クラスの生成方法を制御するには、「プロジェクト・プロパティ」ダイアログの「コード・スタイル」ページから目的のオプションを選択します(詳細は、第4.3.11項「個別プロジェクトのプロパティの設定方法」を参照)。
イベント・セットは、イベントのタイプ、イベントの通信内容、およびイベントの生成およびリスニングに必要な要素を定義します。カスタム・イベントのセットを作成し、そのイベントをサポートするEventListener
インタフェースとEventObject
クラスを作成できます。イベント・リスナー・インタフェースは、イベント・セットのイベントを記述します。
イベント・セットを作成するには、次のようにします。
「アプリケーション」ウィンドウで、Beanの追加先プロジェクトを選択します。
メイン・メニューから、「ファイル」→ギャラリから新規を選択します。
新規ギャラリの「カテゴリ」ツリーで、「一般」を開き、「Java」を選択します。
「項目」リストで、「イベント・セット」をダブルクリックします。
「イベント・セットの作成」ダイアログの「名前」フィールドで、イベント・セットの名前を入力します。
イベントの追加、編集、または削除は、「通知」フィールドで行います。
「OK」をクリックすると、新規イベント・セット・クラスがプロジェクトに追加されます。
Beanを開発する場合、Beanで生成する必要があるすべてのイベントについて考慮する必要があります。コンポーネントが相互に通信する手段を「イベントの受渡し」といいます。コンポーネントはイベントを起動します。起動されたイベントは、通知の対象であるコンポーネントに配信されます。通知を受け取ったコンポーネントは、発生したイベントに基づいてアクションを実行できます。
コンポーネントをイベントが起動できるようにするには、次のようにします。
どのような種類のイベントを起動する必要があるかを決定し、次のどちらかを実行します。
該当する既存のイベント・セットをAWTまたはJFCから選択します。または、
新規イベント・セットを作成します。
コンポーネント用のイベント登録メソッドを作成します。
イベントに対するイベント通知/伝播のメカニズムを作成します。fire
<yourEventName
>Event()
起動されたイベントを、Bean内でイベント送信を必要とする主要なポイントからコールし、イベント通知メカニズムをコールします。