2009-12-24 3 views
0

J'essaye de refaire un panneau existant que j'ai fait avant que GWT 2.0 ait été libéré. Le panneau a quelques champs de texte et un panneau déroulant ci-dessous dans un VerticalPanel.Puis-je mélanger la présentation déclarative et programmatique dans GWT 2.0?

Ce que je voudrais faire est de rendre le panneau avec UIBinder scrollable puis l'ajouter à un VerticalPanel Voici un exemple que j'ai créé pour illustrer ceci:

public class ScrollTablePanel extends ResizeComposite{ 

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

    @UiField FlexTable table1; 
    @UiField FlexTable table2; 

    public Test2() { 

     initWidget(uiBinder.createAndBindUi(this)); 



     table1.setText(0, 0, "testing 1"); 
     table1.setText(0, 1, "testing 2"); 
     table1.setText(0, 2, "testing 3"); 

     table2.setText(0, 0, "testing 1"); 
     table2.setText(0, 1, "testing 2"); 
     table2.setText(0, 2, "testing 3"); 
     table2.setText(1, 0, "testing 4"); 
     table2.setText(1, 1, "testing 5"); 
     table2.setText(1, 2, "testing 6"); 
    } 
    } 

alors le xml:

<ui:UiBinder 
    xmlns:ui='urn:ui:com.google.gwt.uibinder' 
    xmlns:g='urn:import:com.google.gwt.user.client.ui'  
    xmlns:mail='urn:import:com.test.scrollpaneltest'> 
     <g:DockLayoutPanel unit='EM'> 
     <g:north size="2"> 
     <g:FlexTable ui:field="table1"></g:FlexTable> 
     </g:north> 
     <g:center> 
     <g:ScrollPanel> 
     <g:FlexTable ui:field="table2"></g:FlexTable> 
     </g:ScrollPanel> 
     </g:center> 
    </g:DockLayoutPanel> 
</ui:UiBinder> 

faire quelque chose comme cela dans le EntryPoint:

public void onModuleLoad() { 

    VerticalPanel vp = new VerticalPanel(); 
    vp.add(new ScrollTablePanel()); 
    vp.add(new Label("dummy label text")); 
    vp.setWidth("100%"); 

    RootLayoutPanel.get().add(vp); 
    } 

Mais quand j'ajoute le rouleau TablePanel au VerticalPanel, seul le premier FlexTable (test1) est visible sur la page, pas le ScrollTablePanel entier.

Existe-t-il un moyen de faire ce travail où il est possible de mélanger la présentation déclarative et programmatique dans GWT 2.0?

Répondre

2

Vous pouvez vraiment, bien que cela fonctionne d'une certaine manière dans le but d'utiliser uiBinder en premier lieu. Bien sûr, lorsque vous devez utiliser des éléments gui dymamic, tels que FlexTable, vous ne pouvez pas éviter le code init, mais vous pouvez toujours utiliser @UiFactory et @UiField (provided = true) pour en éviter certains. Je crois que votre problème a à voir avec la taille du conteneur VerticalPanel, essayez de le régler à 100%.

Questions connexes