2016-06-02 13 views
0

나는 sinple GWT 애플리케이션에서 내 페이지 요소를 정의하기 위해 UiBinder를 사용합니다.UiBinder (GWT)를 사용하여 선언 된 Panel 위젯에 TextBox 위젯 목록을 추가하는 방법은 무엇입니까?

"Login.ui.xml"은 다음과 같이 정의됩니다. 나는 사용자가 정보를 입력하는 10 텍스트 상자 위젯의 목록을 초기화 할 myMeasuresBoxesPanel verticalPanel 싶습니다

public class Login extends Composite { 

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

    /* 
    * @UiTemplate is not mandatory but allows multiple XML templates to be used 
    * for the same widget. Default file loaded will be <class-name>.ui.xml 
    */ 
    @UiTemplate("Login.ui.xml") 
    interface LoginUiBinder extends UiBinder<Widget, Login> { 
    } 

    @UiField 
    VerticalPanel myMeasuresBoxesPanel; 

    public Login() { 
     this.myMeasuresBoxesPanel.getElement().setId("myMeasuresBoxesPanel"); 
     for(int i = 0; i < 10; i ++) { 
      TextBox newMeasureTextBox = new TextBox(); 
      newMeasureTextBox.setText(String.valueOf(i)); 
      this.myMeasuresBoxesPanel.add(newMeasureTextBox); 
     } 

     initWidget(uiBinder.createAndBindUi(this)); 
    } 
} 

:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' 
    xmlns:gwt='urn:import:com.google.gwt.user.client.ui'> 
<gwt:HTMLPanel> 
    <div align="center"> 
     <gwt:VerticalPanel ui:field="myMeasuresBoxesPanel"> 

     </gwt:VerticalPanel> 
    </div> 
</gwt:HTMLPanel> 

[로그인 클래스는 다음과 같이 정의된다.

코드는 제대로 컴파일되었지만 웹 페이지에는 텍스트 상자가 표시되지 않고 verticalPanel에서 렌더링 된 빈 테이블 만 표시됩니다.

답변

0

답변을 찾았습니다. 패널에 모든 TextBox 위젯을 추가하기 전에 initWidget(uiBinder.createAndBindUi(this));을 호출하면 문제가 해결됩니다.