2013-04-24 88 views
1

我需要一些小部件共享相同的代码库,因此我引入了一个抽象类,提供了这些共享成员和方法,并创建了一个实现,它增加了额外的功能。但每次我想这个添加到VStack时候,我得到了以下错误:SmartGWT:动态添加自定义小部件到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?

更新

它是二/三列表框,这是一个GWT成分,没有SmartGWT的组分。这是我错过的细节。

有人可以告诉我:为什么GWT小部件是现有的父项,而SmartGWT小部件不?或者是错误消息只是假的?

回答

0

问题在于列表框来自GWT,而不是SmartGWT。用相应的SmartGWT小部件替换它就像魅力一样。

0

我发现,作为一般规则:

如果你自取的功能超出显示祢部件的基本不可混合使用GWT和SmartGWT的。

我试图隐藏时,就遇到了这个相同的异常/显示DynamicForm或包含一些简单的GWT的小部件的页面加载的罚款,但我遇到了麻烦,当我试图增加一些隐藏/显示一个VLayout交互功能...

相关问题