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-class 的构造函数中添加了一个新实例,没有抛出错误。仅当我想通过单击按钮添加 HStack 时才会引发错误

为什么我不能将此 HStack 添加到我的 VStack 中?

更新

它是ListBox的 b/c ,它是一个 GWT 组件,而不是 SmartGWT 组件。这是我错过的细节。

谁能告诉我:为什么 GWT 小部件有一个现有的父级,而 SmartGWT 小部件没有?还是错误消息只是伪造的?

4

2 回答 2

0

问题是ListBox来自 GWT,而不是 SmartGWT。用适当的 SmartGWT 小部件替换它,它就像一个魅力。

于 2013-05-03T18:28:43.800 回答
0

我发现,作为一般规则:

如果您寻求超出小部件基本显示功能的功能,则不应混合使用 GWT 和 SmartGWT。

DynamicForm我在尝试隐藏/显示包含一些普通 GWT 小部件的 a或 a时遇到了同样的异常VLayout......页面加载正常,但是当我尝试添加一些隐藏/显示交互功能时遇到了麻烦......

于 2013-08-05T17:28:36.623 回答