我有一个 Composite,它的主要小部件有两个 child ,因此:
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 呢?
最佳答案
试试 insert()
而不是 add()
.
很遗憾,您无法调用 insert()
因为它是 protected ,所以你需要扩展FlowPanel
:
public class UsefulFlowPanel extends FlowPanel {
public void add (int index, Widget child) {
insert (child, getElement(), index, true);
}
}
应该管用。
关于dom - 如何替换面板中的 GWT 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1508165/