0

そのため、Composite を拡張し、UIBinder を使用してレイアウトを作成する 1 つのスーパー クラス Block を用意しています。

class Block extends Composite

その 1 つに対して 2 つのサブクラスを作成し、それぞれに追加する必要があるアイコンのセットが異なるようにしたいと考えています。たとえば、InactiveBlock と ActiveBlock です。

ここでの問題は、両方のブロック (アイコン、およびいくつかのボタン、ラベル) のレイアウトを UIBinder を介して作成し、その UIBinder (およびそのイベント) をメイン ブロックに追加することです。

明らかに私は次のようなことはできません

class ActiveBlock extends Block, Composite
    add(initWidget(UIBinder.create(this)));

どうすればこれを達成できますか?

(ps私の質問が十分に明確でない場合は、詳しく説明できるように教えてください)

4

1 に答える 1

1

入力パラメーター (アクティブ/非アクティブ) としてブール値を持つコンストラクター メソッドを持つ単一のクラスにします。

そのため、イベント ハンドラー、画像など、クラス内のすべての共通フィールドとメソッドを定義できます。次に、コンストラクター メソッドを使用して要素とハンドラーを基本ウィジェットに追加します。アクティブかどうかに応じて、すべてのインスタンスに何かが追加されます。

この場合、コードが重複することはありませんが、それでも uibinder を使用する利点があり、最終的にはコードが読みやすいほど単純になります。

于 2012-12-17T21:01:29.680 に答える