我需要一些共享相同代码库的小部件,因此我引入了一个提供这些共享成员和方法的抽象类,并创建了一个添加额外功能的实现。但每次我想将它添加到 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-class 的构造函数中添加了一个新实例,没有抛出错误。仅当我想通过单击按钮添加 HStack 时才会引发错误
为什么我不能将此 HStack 添加到我的 VStack 中?
更新
它是ListBox的 b/c ,它是一个 GWT 组件,而不是 SmartGWT 组件。这是我错过的细节。
谁能告诉我:为什么 GWT 小部件有一个现有的父级,而 SmartGWT 小部件没有?还是错误消息只是伪造的?