我有一个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);
}
Run Code Online (Sandbox Code Playgroud)
构建MyComposite后的一段时间,我想将child1交换出来,将其替换为另一个小部件new-child1.
我可以通过调用panel.remove(child1)删除child1,然后通过调用panel.add(new-child1)添加我的新小部件; 但这会导致child2首先渲染,不是吗?
那么,如何在不改变面板子项顺序的情况下将child1替换为new-child1?
Aar*_*lla 10
尝试insert()
而不是add()
.
不幸的是,你不能打电话,insert()
因为它受到保护,所以你需要扩展FlowPanel
:
public class UsefulFlowPanel extends FlowPanel {
public void add (int index, Widget child) {
insert (child, getElement(), index, true);
}
}
Run Code Online (Sandbox Code Playgroud)
应该管用.