生成されるJClientコードについて

JClientアプリケーションでは、JClientフォームの作成に使用するUIコンテナによく似た一連のJClientオブジェクトを作成することで、Swingコントロールとビジネス・コンポーネントのデータソース間のデータ・バインドを行います。これらのコンテナおよびそのJClient固有のコードは、JClientフォーム・ウィザードを使用して完全なアプリケーションを生成すれば確認できます。たとえば、DeptとEmpのビュー・オブジェクトに基づくマスター/ディテール形式のフォームの場合、ウィザードは次のクラスを生成します。

ここで、JPanel、JFrameはSwingクラスです。JClientPanelはJClientフレームワークの一部で、アプリケーションのデータ参照パネルを構成します。

JClientがデータ・パネル間でデータ・コンテキストを保持する方法

JFrameまたはJPanelにより実装されるJClientPanelインタフェースによって、JClientアプリケーションでは次のようにデータを扱うことができます。

設計段階では、JClientアプリケーションに追加する各データ参照パネルは、UIコントロールとビジネス・コンポーネントの行セット・イテレータとの間の対話を受渡しするコンテキストを、フレームまたは親パネル(マスター/ディテール・レイアウト・パネルなど)で作成されるpanelBindingオブジェクトから取得します。JClientではデータ参照パネルの連鎖機能が提供されており、コードを追加する必要があません。たとえば、ウィザードでPanelDeptViewとPanelEmpView1というデータ参照パネルが生成される場合、それらの間では、各JPanelがJClientPanelインタフェースのsetPanelBinding()メソッドおよびgetPanelBinding()メソッドを実装しているため、panelBindingのインスタンスを介して同じデータ・コンテキストを共有します。

このパネル・バインドを作成するフレームまたはパネルがあると、既存のpanelBindingオブジェクトを共有する、または新しいpanelBindingオブジェクトを作成する新規のデータ参照パネルを追加してJClientでアプリケーションを構築できます。

その後、JDeveloperのUIエディタを使用して、コントロールを1つずつデータ・パネルに追加できます。Swingコンポーネントのレベルでは、データ・バインドは、コントロールのdocumentまたはmodelプロパティにJClientコントロール・モデルを指定して設定します。実行時には、データ・パネル内の各コントロールが、そのコントロールのsetModel()メソッドまたはsetDocument()メソッドへの引数としてpanelBindingオブジェクトをとることによってデータ・バインドされます。

パネル・バインドを作成および使用するプロセス

データ・バインドされたパネルによってpanelBindingがどのように作成および使用されるかを理解するには、アプリケーションを実行した場合に、JFrameから始まって次のようなJClientコードが実行される際の処理を考えます。

  1. アプリケーション・モジュールのセッション・オブジェクトの作成を可能にするアプリケーション・オブジェクト(JUApplication)を作成することにより、main()がアプリケーションをブートストラップします。
  2. アプリケーション・オブジェクトを引数とするコンストラクタを介して、フレーム(FormDeptViewEmpView1)が初期化されます。フレームの初期化により、特定のBC4Jクライアント・データ・モデル定義に対するpanelBindingオブジェクト(JUPanelBinding)が作成されます。パネル・バインドの作成は、Swingコンポーネントへのデータ・バインドと、データ・パネルの連鎖を可能にするJClientの重要な機能です。
  3. フレームまたはアプレット・クラスがレイアウト・パネル(前述の例では、MDPanelDeptViewEmpView1)を初期化し、新しいレイアウト・パネルにパネル・バインドを設定します。
  4. レイアウト・パネルのjbInit()メソッドでは、データ参照(子)パネルの作成が行われます。このため、JClientはレイアウト・パネルのパネル・バインドを子パネル(PanelDeptViewおよびPanelEmpView1)に渡します。これによって、子パネルはレイアウト・パネルおよびメイン・フレームとパネル・バインドを共有します。
  5. コントロールの指定されたJClientモデルを使用して、コントロールから属性へのデータ・バインドが行われます。
  6. UIコントロールに対するデータの移入および更新を行うため、コントロール・バインドによりイベントが処理されます。