同じコード ベースを共有するウィジェットが必要なので、これらの共有メンバーとメソッドを提供する抽象クラスを導入し、追加機能を追加する実装を作成しました。しかし、これを 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 ウィジェットにはないのはなぜですか? それともエラーメッセージは偽物ですか?