如何替换Panel中的GWT小部件?

时间:2009-10-02 07:35:42

标签: dom gwt

我有一个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?

1 个答案:

答案 0 :(得分:10)

尝试使用insert()代替add()

很遗憾,您无法致电insert(),因为它受到保护,因此您需要延长FlowPanel

public class UsefulFlowPanel extends FlowPanel {
    public void add (int index, Widget child) {
        insert (child, getElement(), index, true);
    }
}

应该有用。