1

Test.ui.xml

<g:DialogBox ui:field="wishlistDialogBox" autoHide="true">
     <g:caption>Test</g:caption>
     <g:HTMLPanel> some widgets..</g:HTMLPanel>
</g:DialogBox>

実行後もアプリケーションに が表示DialogBoxされるため、「wishlistDialogBox」を非表示に設定しようとしましTestView.javaたが、機能しませんでした。

  @UiField DialogBox wishlistDialogBox;
  @Inject
  public TestView(final Binder binder) {
        widget = binder.createAndBindUi(this);
        wishlistDialogBox.hide();
   }

次に、非表示に設定しましたTestPresenter.javaが、それでも機能しませんでした

  @Override
  protected void onBind() {
      super.onBind();
      getView().getWishlistDialogBox().hide();
  }

どうした、グッドルは全く説明しなかった。

さらに、DialogBox?を再利用する方法

4

3 に答える 3

2

DialogBox(およびPopupPanels 一般に) DOM への追加について言えば、他のウィジェットのようには機能しません。直接 (つまり、XML ファイルpanel.add(yourDialogBox)内に) 添付しないでください。UiBinder代わりに、それらを作成し、単にhide()/show()などのメソッドを呼び出して、表示/非表示 (つまり、DOM の末尾または DOM からのアタッチ/デタッチ) を取得する必要があります。

于 2013-09-29T11:21:14.217 に答える
0

私にとってうまくいくのは、他のウィジェットとは別にダイアログボックスを作成することです。したがって、独自の Java ファイルと独自の ui.xml ファイルがあります。

UiBinder xml ファイル:

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
  xmlns:g="urn:import:com.google.gwt.user.client.ui">

  <g:DialogBox ui:field="dialog">
    <g:caption>My Dialog</g:caption>
    <g:HTMLPanel> 
      <g:Button ui:field="closeButton" text="close" /> 
    </g:HTMLPanel> 
  </g:DialogBox>

</ui:UiBinder> 

Java ファイル:

public class MyDialog { // here you do not inherit anything

    private static MyDialogUiBinder uiBinder = GWT.create(MyDialogUiBinder.class);

    interface MyDialogUiBinder extends UiBinder<Widget, MyDialog> {
    }

    @UiField
    DialogBox dialog;

    @UiField
    Button closeButton;

    public MyDialog() {
      // make cast to DialogBox
      dialog = (DialogBox) (uiBinder.createAndBindUi(this));
    }


    public void hide() {
      dialog.hide();
    }

    public void show() {
      dialog.center();
    }

    @UiHandler("closeButton")
    public void onClick(ClickEvent event) {
      hide();
    }

}
于 2013-09-29T09:00:25.470 に答える
-1

最後に、私は方法を見つけました。それは、をDialogBox目に見えないものにすることですHTMLPanel

<g:HTMLPanel visible="false"> 
    <g:DialogBox ui:field="wishlistDialogBox" autoHide="true">
        <g:caption>Test</g:caption>
        <g:HTMLPanel> some widgets..</g:HTMLPanel>
    </g:DialogBox>
</g:HTMLPanel>

DialogBox次に、いつものようにshow & hide を呼び出すだけで、 invisible 内にラップされていたものDialogBoxも表示されます。DialogBoxHTMLPanel

getView().getWishlistDialogBox().show();
于 2013-09-29T13:48:56.297 に答える