Come posso avvolgere uno StackLayoutPanel in un DecoratorPanel utilizzando UiBinder?

StackOverflow https://stackoverflow.com/questions/2013169

  •  19-09-2019
  •  | 
  •  

Domanda

Dopo aver costruito con successo un'interfaccia utente non banale di programmazione utilizzando GWT, sto cercando di ricreare la stessa interfaccia utente utilizzando UiBinder. Non ho mai usato alcun tipo di interfaccia utente del sistema dichiarativo prima e anche se sto facendo progressi e riesco a vedere i benefici di un tale approccio, sto riuscendo a ottenere un DecoratorPanel per avvolgere correttamente uno StackLayoutPanel.

StackNavigator.java

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

public class StackNavigator extends Composite {

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

    interface StackNavigatorUiBinder extends UiBinder<Widget, StackNavigator> {}

    public StackNavigator() {
        initWidget(uiBinder.createAndBindUi(this));
    }

}  

StackNavigator.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" xmlns:bandmates="urn:import:org.redboffin.bandmates.client">

    <ui:style>  
        .gwt-DecoratorPanel {
            width: 200px;
            height: 200px;
        }
        .gwt-DecoratorPanel .middleCenter {
            height: 100%;
            width: 100%;
        }
    </ui:style>

    <g:DecoratorPanel>
        <g:StackLayoutPanel unit='PX'>
            <g:stack>
                <g:header size='20'>Item One</g:header>
                <g:Label>TODO : Item One List Widget</g:Label>
            </g:stack>
            <g:stack>
                <g:header size='20'>Item Two</g:header>
                <g:Label>TODO : Item Two List Widget</g:Label>
            </g:stack>
             <g:stack>
                <g:header size='20'>Item Three</g:header>
                <g:Label>TODO : Item Three List Widget</g:Label>
            </g:stack>
        </g:StackLayoutPanel> 
    </g:DecoratorPanel>

</ui:UiBinder>

Senza essere avvolta nel DecoratorPanel, i display e funzioni StackLayoutPanel come previsto. Quando avvolto in DecoratorPanel, lo StackLayoutPanel non può essere visto. Al suo posto è un cerchio blu molto piccolo, che sto indovinando è la grafica del DecoratorPanel angolo raggruppati insieme ermeticamente. Ecco perché ho cercato di impostare una larghezza e un'altezza sul DecoratorPanel e impostare l'area centrale al 100%, come suggerito nelle API GWT.

Non fa quello che mi aspetto quindi devo essere equivoco qualcosa qui. Chiunque può aiutare?

Grazie: -)

È stato utile?

Soluzione

LayoutPanels non funzionano bene se non sono contenuti in qualcosa che ProvidesResize, essenzialmente un'altra LayoutPanel di qualche tipo. DecoratorPanel non è un LayoutPanel e non è destinato a contenere uno.

Il problema sarebbe ancora avvenire senza UiBinder, non è un problema di come si sta dichiarandolo.

Altri suggerimenti

DecoratorLayoutPanel classe, che è un'implementazione di DecoratorPanel che sottoclassi LayoutPanel. E 'quindi compatibile con il quadro LayoutPanel (a differenza DecoratorPanel), e dovrebbe avvolgere il vostro StackLayoutPanel correttamente.

(NOTA BENE:. Il codice viene donato liberamente, e non ha restrizioni di licenza E 'ospitato sul mio blog http://hkwebentrepreneurs.com , che è un blog non a scopo di lucro).

UPDATE:

A titolo di spiegazione, DecoratorLayoutPanel questo imita classe DecoratorPanel di GWT aggiungendo 9 widget per sé e disporli in una griglia 3x3. Gli 8 widget più esterne sono stile CSS utilizzando angoli arrotondati del DecoratorPanel, con una dimensione predefinita di 5px. Il widget di una centrale è espandibile e viene utilizzato per contenere il contenuto LayoutPanel.

Il vantaggio è che si ottiene lo stesso effetto arrotondati angoli del DecoratorPanel, pur essendo in grado di aggiungere qualsiasi LayoutPanel come un bambino e averlo dimensionato automaticamente per adattarsi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top