2011-08-02 71 views
3

我有一個要求,當點擊一個按鈕,用戶應該被提示彈出/對話框輸入一些額外的細節,如姓氏,出生等,我試圖玩window.confirm(),但我認爲這樣做不符合我的目的。有人可以幫助我如何通過UIBinder在GWT中實現這一點嗎?GWT Popup和UIBinder:Panel或DialogBox?

我嘗試一些像這樣的事情在我的UI binder.xml

<g:HTMLPanel visible="false" > 
            <g:DialogBox ui:field="dialogPanel" 
             animationEnabled="true" modal="false" glassEnabled="false"> 
             <g:caption>More Details</g:caption> 
             <table> 
              <tr> 
               <td colspan="2" align="center"> 
                <g:Datepicker ui:field="DOB">DOB:</g:Datepicker> 
               </td> 
              </tr> 

              <tr> 
               <td>UserName:</td> 
               <td> 
                <g:TextBox ui:field="usernameTextBox" /> 
               </td> 
              </tr> 
              <tr> 
               <td></td> 
               <td align="right"> 
                <g:Button ui:field="loginButton">OK</g:Button> 
               </td> 
              </tr> 
             </table> 
            </g:DialogBox> 
           </g:HTMLPanel> 

我不知道有去其中一個:彈出窗口或對話框!

謝謝。

回答

10

下面是一個使用UiBinder的一個GWT對話框骨架:

MyDialogBox.java

import com.google.gwt.core.client.GWT; 
import com.google.gwt.uibinder.client.UiBinder; 
import com.google.gwt.user.client.ui.DialogBox; 
import com.google.gwt.user.client.ui.Widget; 

public class MyDialogBox extends DialogBox { 
    private static final Binder binder = GWT.create(Binder.class); 
    interface Binder extends UiBinder<Widget, MyDialogBox> { 
    } 
    public MyDialogBox() { 
     setWidget(binder.createAndBindUi(this)); 
     setAutoHideEnabled(true); 
     setText("My Title"); 
     setGlassEnabled(true); 
     center(); 
    } 
} 

MyDialog.ui.xml

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' 
    xmlns:g='urn:import:com.google.gwt.user.client.ui'> 
    <ui:style> 
     .panel { 
      background-color: ivory; 
     } 
    </ui:style> 
    <g:FlowPanel styleName="{style.panel}"> 
    <g:Label>Dialog Content</g:Label> 
    </g:FlowPanel> 
    </ui:UiBinder> 

顯示它使用:

MyDialogBox m = new MyDialogBox(); 
m.show(); 
0

DialogBoxPopupPanel的孩子,並具有其所有功能。此外,它具有(從文檔):

..caption area at the top and can be dragged by the user. 

關於在UiBinder的使用(再次從文檔):

DialogBox elements in UiBinder templates can have one widget child and one 
<g:caption> child. 

如此看來,你需要有一個GWT小部件來替換你<table>,最大概<g:HTMLPanel>,並把它整個<table>裏面。

此外,PopupPanel和DialogBox是獨立的小部件,通常不會被添加到其他小部件,但通過.show()hide()方法顯示。因此,在您的UiBinder中,您可以將 <g:DialogBox>置於根級別。

+0

嗨,感謝您的答覆。我能夠得到這個只需稍作改動。我仍然將Html包裹在dialogBox標籤中。我必須在我的UiHandler方法中調用dialogBox.center()。 – user874722