2013-11-11 5 views
0

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

<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)); 
+0

это работает! почему я не попробовал? Большое спасибо –

Смежные вопросы