2011-12-19 2 views
9

uiBinder로 flextable을 설정하려고합니다. GWT 2.4를 사용 중이고 flextable을 수행하는 방법을 알고 있지만 uiBinder를 사용하지는 않습니다. 이 질문을 발견 : How can I add rows to a Google Web Toolkit flextable in the UiBinder? 그래서, 어떻게해야합니까에 대한 예제를 물었다. 내가 같이 위젯을 선언하는 경우GWT 2.4 용으로 uiBinder로 flextable을 설치하는 방법

그래서 :

@UiBinder FlexTable flexTable; 

어떻게 @UiConstructor이나와 이름이 열 (제공 = true)를 사용하여 두 개의 열이있는 빈 행과 헤더 행을 초기화합니까 uiBinder?

답변

12

FlexTable 위젯을 사용하는 경우 ui.xml 템플릿 만 사용하여 위치, 서식 및 속성을 설정할 수 있습니다. Java 코드에서 테이블의 내용 (및 헤더)을 제공해야합니다.

1 : 당신이 initWidget(...)를 호출 할 때 당신을 위해 비어있는 새 FlexTable의 인스턴스를 템플릿에 의존

이 두 가지 방법이 있습니다. 콘텐츠를 지정하기 바로 뒤에 바로 table.setText(0,0, "Header 1") 등을 호출하여 후속 조치를 취할 수 있습니다.

2 : 인스턴스화 당신이 initWidget(...) 전화도 = true를 제공하여 테이블 멤버 변수에 주석을 전에 FlexTable 자신 . setText()과 동일한 전화를 사 용하십시오.

public final class SomeWidget extends Composite { 

    @UiField (provided=true) FlexTable table; 

    SomeWidget() { 

    // When using provide=true, the table must be instantiated 
    // BEFORE calling initWidget. 
    setupTable(); 

    initWidget(binder.createAndBindUi(this)); 
    } 

    private void setupTable() { 
    table = new FlexTable(); 
    table.setText(0, 0, "Header 1"); 
    table.setText(0, 1, "Header 2"); 

    // Create a temp blank row: 
    table.insertRow(1); 
    } 

    private static final Binder binder = GWT.create(Binder.class); 
    interface Binder extends UiBinder<Widget, SomeWidget> {} 
} 

그리고 당신의 ui.xml 파일 (접근 방식이 사용) :

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

    <ui:style> 
    .table-style { 
     border: 1px solid black; 
    } 
    </ui:style> 

    <gwt:HTMLPanel> 
    Other random html 
    <gwt:FlexTable ui:field="table" styleName="{style.table-style}" borderWidth="2" /> 
    </gwt:HTMLPanel> 

</ui:UiBinder> 
+1

나는'UI에서 정의하는 정적 레이아웃을 가지고 할 수있는 방법이 있나요을 .xml 파일? 아니면 확인란과 텍스트가 포함 된 간단한 표를 사용하는 다른 방법? – displayname

관련 문제