0

私は GWT に慣れていないので、ビューを更新しようとしているときに問題が発生します。MVP パターンに基づいてコーディングしようとしているので、TempPresenter と TempViewer の 2 つのクラスがあります。この UI (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 をクリックしても変化はありません。私は今まで間違っていましたか?または、この方法を使用してビューを更新することはできません。では、どうすれば更新できますか?

4

1 に答える 1

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));
于 2013-11-12T11:49:19.957 に答える