Как заменить виджет GWT в Panel? - PullRequest
7 голосов
/ 02 октября 2009

У меня есть 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.

Возможно, я мог бы удалить child1, вызвав panel.remove (child1), а затем добавить свой новый виджет, вызвав panel.add (new-child1); но это приведет к тому, что child2 будет отображаться первым, не так ли?

Итак, как я могу заменить child1 на new-child1, не меняя порядок дочерних элементов панели?

1 Ответ

10 голосов
/ 02 октября 2009

Попробуйте insert() вместо add().

К сожалению, вы не можете позвонить insert(), поскольку он защищен, поэтому вам нужно расширить FlowPanel:

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

должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...