我需要一些共享相同代码库的小部件,因此我引入了一个提供这些共享成员和方法的抽象类,并创建了一个添加其他功能的实现。但每次我想将它添加到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中?
更新
它是 ListBox 的b / c,它是一个GWT组件,没有SmartGWT组件。这是我错过的细节。
任何人都可以告诉我:为什么GWT小部件是现有的父级,而SmartGWT小部件却没有?或者错误信息只是虚假的?
答案 0 :(得分:0)
问题是 ListBox 来自GWT,而不是SmartGWT。用适当的SmartGWT小部件替换它就像魅力一样。
答案 1 :(得分:0)
我发现,作为一般规则:
如果您在基本显示小部件之外寻求功能,则不应混用GWT和SmartGWT。
我在尝试隐藏/显示包含一些普通GWT小部件的DynamicForm
或VLayout
时遇到了同样的异常...页面加载正常,但是当我尝试时遇到了麻烦添加一些隐藏/显示交互功能......