我有一个很奇怪的问题,
将一个WidgetCollection
从一个FlowPanel
复制到另一个Widgets
时。WidgetCollection
中的正在移动而不是复制。因为这两个小部件保留在前一个面板中。
这是我的代码:
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
}
这里怎么了?
提前谢谢!!!
最佳答案
将小部件添加到新面板时,它将自动从以前的面板中移除。没有什么超简单的方法可以绕过这个。您需要为每个小部件创建一个新实例,然后添加该副本。
如果您的目标只是将小部件从一个面板移动到另一个面板,只需将toDelete.getWidget(i)
更改为toDelete.getWidget(0)
。您还可以考虑只移动toDelete
面板本身,而不是移动其所有小部件。