0

アプリケーション用に多数のフォームを作成しなければならない状況があり、フォームはすべて同じパッケージにあります。それらの名前は、A11111.java、A11112.java などです。

ユーザーが NavigationPane をクリックすると、フォームが TabItem に読み込まれ、フォームが表示されます。問題は、フォーム名を場所に追加してフォームの名前を動的に生成する必要があることです。たとえば、String formName = "com.foo.appName.client.forms" + e.getData("formCode"); そのようなもので、e はユーザーのクリックのイベントです。

いくつかのリフレクション メソッドを見てきましたが、それらに派生文字列を渡すことはできません。これを行うにはどうすればよいですか?ジェネレーターの使用について言及している投稿がいくつかありますが、ロジックを並べ替えようとして迷ってしまい、フォームの表示とは関係ありません。

フォームに変数を渡したり、フォーム Java ファイルのメソッドを呼び出したりしていないことに注意してください。また、フォームは uibinding を使用して作成されます。

前もって感謝します

4

1 に答える 1

0

コマンド設計パターンを使用する場合のように、クラスローダーを介してクラスを遅延ロードすることを目指している場合、フレームワークの JRE エミュレーションは型のサブセットのみを提供するため、GWT アプリケーション内では実行できないことに注意してください。および/または JREで使用可能なメソッドであるため、ほとんどのリフレクション API などforName()は使用できません。

クラスを遅延ロードするのではなく、ウィジェットを DOM に遅延レンダリングするという観点から考えてください。これは、モジュールの読み込み時にすべてのフォーム クラスをインスタンス化することで実現できますが、タブ切り替え時にのみレンダリングされます。レンダリング関連のすべての機能をonRender()コールバック内に配置すれば、準備完了です。

public class FormItem extends TabItem {

    @Override
    protected void onRender(Element parent, int index) {
        super.onRender(parent, index);

        // render related functionality
    }
}
于 2012-05-25T13:40:59.360 に答える