2013-04-24 86 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交互功能...

相關問題