我有一个Composite,其主要部件有两个子节点,因此:
public MyComposite() {
child1 = new FlowPanel();
child1.getElement().setId("child1");
child2 = new FlowPanel();
child2.getElement().setId("child2");
panel = new FlowPanel();
panel.add(child1);
panel.add(child2);
initWidget(panel);
}
构建MyComposite后的一段时间,我想将child1交换出来,将其替换为另一个小部件new-child1。
我可以通过调用panel.remove(child1)删除child1,然后通过调用panel.add(new-child1)添加我的新小部件;但这会导致child2首先被渲染,不是吗?
那么,如何在不改变面板子项顺序的情况下将child1替换为new-child1?
答案 0 :(得分:10)
尝试使用insert()
代替add()
。
很遗憾,您无法致电insert()
,因为它受到保护,因此您需要延长FlowPanel
:
public class UsefulFlowPanel extends FlowPanel {
public void add (int index, Widget child) {
insert (child, getElement(), index, true);
}
}
应该有用。