在GWT中复制WidgetCollection时出现问题?

时间:2011-05-07 11:17:04

标签: java gwt

我有一个很奇怪的问题,

将一个WidgetCollection从一个FlowPanel复制到另一个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}}

这里有什么问题? 在此先感谢!!!

1 个答案:

答案 0 :(得分:1)

将小部件添加到新面板时,会自动将其从上一个面板中删除。没有超级简单的方法来解决这个问题。您需要为每个小部件创建一个新实例,然后添加该副本。

如果只是将小部件从一个面板移动到另一个面板的目标,只需将toDelete.getWidget(i)更改为toDelete.getWidget(0)即可。您也可以考虑仅移动toDelete面板而不是移动其所有小部件。