Обновить представление в GWT

Я так новичок в GWT и у меня возникли проблемы, когда я пытаюсь обновить вид. Я пытаюсь кодировать на основе шаблона MVP, поэтому у меня есть эти два класса TempPresenter и TempViewer. После загрузки этого пользовательского интерфейса (TempViewer.ui.xml) я хочу добавить новую панель к этому дисплею, когда пользователь нажимает на submitButton:

<g:HTMLPanel ui:field="temp">
<div align="center">
    <g:HorizontalPanel>
        <g:VerticalPanel>
            <g:Label text="X data"/>
            <g:TextArea ui:field="xData" visibleLines="10"/>
        </g:VerticalPanel>
    </g:HorizontalPanel>

    <g:Button ui:field="submitButton" text="Submit" />
    <g:VerticalPanel ui:field="newPanel" />
</div>
</g:HTMLPanel>

Итак, я написал эти строки в TempView:

// TempView.java
...
@UiField
VerticalPanel verticalPanel;

public void setVerticalPanel(VerticalPanel v) {
    this.verticalPanel = v;
}
...
@UiHandler("submitButton")
public void onSubmitButtonClick(ClickEvent event){
    presenter.onSubmitButtonClicked(event);
}
...

и эти строки в TempPresenter:

// TempPresenter.java
...
public void onSubmitButtonClicked(ClickEvent event) {
    VerticalPanel panel = new VerticalPanel();
    panel.add(new Label("newLabel"));

    view.setVerticalPanel(panel);

    ...
}

Когда я запускаю эту программу, я не получаю ошибок, и все в порядке. Однако, когда я нажал на submitButton, никаких изменений не произошло. Я сделал ошибку до сих пор? Или невозможно обновить вид, используя этот способ. Итак, как я могу обновить его?

1 ответ

Решение

Пытаться

<g:HTMLPanel ui:field="temp">
<div align="center">
    <g:HorizontalPanel ui:field="hPanel"/>

    <g:Button ui:field="submitButton" text="Submit" />
    <g:VerticalPanel ui:field="newPanel" />
</div>
</g:HTMLPanel>

а также

// TempView.java
...
@UiField
HorizontalPanel hPanel;

public void setVerticalPanel(VerticalPanel v) {
    hPanel.add(v);
}

Или установите панель в конструкторе представления перед вызовом

initWidget(uiBinder.createAndBindUi(this));
Другие вопросы по тегам