2011-08-07 1 views
1

DialogBox 계층을 "처음부터"빌드하려고합니다. 우선, 나는 GWT UiBinder를 사용하여 대화 상자를 확장/서브 컨텐츠로 만드는 방법은 무엇입니까?

  • 를 야해 BaseDialog.java 클래스 : 대화 상자 (GWT 위젯)

    public class BaseDialog extends DialogBox { 
    
        protected static BaseDialog2UiBinder uiBinder = GWT 
          .create(BaseDialog2UiBinder.class); 
    
        interface BaseDialog2UiBinder extends UiBinder<Widget, BaseDialog2> { 
        } 
    
        @UiField 
        protected FlowPanel contentPanel; 
    
        public BaseDialog() { 
         setWidget(uiBinder.createAndBindUi(this)); 
        } 
    } 
    
  • BaseDialog.ui.xml

    를 확장 간단한 대화 Y가
    <!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"> 
    
        <g:VerticalPanel width="200px" height="200px"> 
         <g:Label>Label principal</g:Label> 
         <g:FlowPanel ui:field="contentPanel" /> 
        </g:VerticalPanel> 
    
    </ui:UiBinder> 
    

BaseDialog에는 간단한 Label과 contentPanel (FlowPanel)이 포함되어 있습니다.

BaseDialog (예 : ConfirmationDialog)를 확장하고 싶습니다. ConfirmationDialog는 BaseDialog의 contentPanel의 내용을 채 웁니다.

어떻게하면됩니까?

감사합니다.

답변

3

좋아, 나는 해결책 발견 : 당신의 대답에

public class ConfirmationBox extends BaseDialog2 { 
    protected static ConfirmationBoxUiBinder uiBinder = GWT.create(ConfirmationBoxUiBinder.class); 

    interface ConfirmationBoxUiBinder extends UiBinder<Widget, ConfirmationBox> { 
    } 

    @UiField 
    Label helloLabel; 

    public ConfirmationBox() { 
    contentPanel.add(uiBinder.createAndBindUi(this)); 
    } 
} 

그리고

<!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" xmlns:my="urn:import:com.guardis.cortex.web.client.dialog"> 

    <g:FlowPanel> 
     <my:BaseDialog2> 
      <g:FlowPanel ui:field="contentPanel"> 
       <g:Label>test contentPanel from confirmationBox</g:Label> 
      </g:FlowPanel> 
     </my:BaseDialog2> 
     <g:Label ui:field="helloLabel">Hello world from confirmation box (outside of BaseDialog)</g:Label> 
    </g:FlowPanel> 
</ui:UiBinder> 
+0

당신이 BaseDialog2에서 확장을하지만, 문제의 클래스는 BaseDialog이다. 나는 그들이 같다고 추측하고 있습니까? 또한이 방법으로 계속 하시겠습니까? 아니면 더 좋은 방법을 찾았습니까? – Michael

관련 문제