2011-05-07 46 views
3

我有一個很奇怪的問題,在GWT中複製WidgetCollection時出現問題?

雖然從一個FlowPanel複製一個WidgetCollection到另一個。 WidgetsWidgetCollection正在移動而不是複製。因爲這兩個小部件保留在前一個面板。
這裏是我的代碼:

final FlowPanel toDelete = getWidgetByID(from); 
    final FlowPanel toPaste = getWidgetByID(to); 
    final Iterator<Widget> iterator = toDelete.iterator(); 
    while (iterator.hasNext()) { 
     toPaste.add(iterator.next()); 
    } 

和下一個版本:

final FlowPanel toDelete = getWidgetByID(from); 
    final FlowPanel toPaste = getWidgetByID(to); 
    final int count = toDelete.getWidgetCount(); 
    for (int i = 0; i < count; i++) { 
     toPaste.add(toDelete.getWidget(i));// here, i'm getting IndexOutOfTheBounds exception 
    } 

有什麼不對嗎? 在此先感謝!

回答

1

當您將小部件添加到新面板時,它會自動從其前面板中刪除。沒有超級簡單的方法來解決這個問題。您需要創建每個小部件的新實例,然後添加該副本。

如果只是將小部件從一個面板移動到另一個面板的目標,只需將toDelete.getWidget(i)更改爲toDelete.getWidget(0)即可。您也可以考慮移動toDelete面板本身,而不是移動它的所有小部件。

+0

謝謝,'toDelete.getWidget(0)'正在工作。我曾想過,它應該像其他'Collections'一樣工作。 – 2011-05-07 13:32:36