1

同じコード ベースを共有するウィジェットが必要なので、これらの共有メンバーとメソッドを提供する抽象クラスを導入し、追加機能を追加する実装を作成しました。しかし、これを VStack に追加しようとするたびに、次のエラーが発生しました。

java.lang.AssertionError: A widget that has an existing parent widget may not be added to the detach list

これがクラス階層の b/c であるかどうかを確認するために、メソッドで同じものを作成しましたが、それでも同じエラーが発生します。以下のコードは、私が達成したいことを説明する必要があります。

public class Test extends VStack {
  // constructor that adds button and a clickhandler for the button 
  // that will call addComplex()
  public void addComplex() {
    HStack stack = new HStack();
    stack.setHeight("22px");
    stack.addMember(new IButton("remove"));
    stack.addMember(new ListBox());
    DynamicForm form = new DynamicForm();
    form.setFields(new TextItem());
    stack.addMember(form);
    addMember(stack);
  }
}

私がちょうど電話するとき

addMember(new Label(""));

エラーは発生しません。

さらに、addComplex メソッド内のものは別のクラスにあり、この Test クラスのコンストラクターに新しいインスタンスを追加すると、エラーはスローされません。ボタンをクリックしてHStackを追加したい場合にのみ、エラーがスローされます

この HStack を VStack に追加できないのはなぜですか?

アップデート

それは GWT コンポーネントであるListBoxの b/c であり、SmartGWT コンポーネントではありませんでした。これは私が見逃した詳細でした。

誰か教えてください: GWT ウィジェットには既存の親があり、SmartGWT ウィジェットにはないのはなぜですか? それともエラーメッセージは偽物ですか?

4

2 に答える 2

0

一般的なルールとして、次のことがわかりました。

ウィジェットの基本的な表示以外の機能を求める場合は、GWT と SmartGWT を混在させてはなりません。

DynamicFormプレーンな GWT ウィジェットを含むまたはを非表示/表示しようとしたときに、この同じ例外に遭遇しましたVLayout...ページは正常に読み込まれましたが、非表示/表示の相互作用機能を追加しようとしたときに問題が発生しました...

于 2013-08-05T17:28:36.623 に答える
0

問題は、ListBoxが SmartGWT ではなく GWT のものであるということでした。それを適切な SmartGWT ウィジェットに置き換えると、魅力的に機能します。

于 2013-05-03T18:28:43.800 に答える