2010-11-15 19 views
5

Esiste un componente come StackPanel o DecoratedStackPanel che ha la capacità di mostrare più di un pannello nello stack alla volta? Mi piace avere l'opzione di espandere tutto o comprimere qualsiasi numero di pannelli che voglio.Limitazione GWT StackPanel?

risposta

3

Ok, dato che non ho avuto risposta, questo è ciò che ha funzionato per me. Google non rende semplice estendere i pannelli esistenti per aggiungere o modificare funzionalità, quindi quello che ho fatto è stato il download della fonte, la copia StackPanel.java, DecoratorPanel.java e DecoratedStackPanel.java in un pacchetto nel mio progetto gwt.

Il cambiamento principale per cui ho davvero bisogno di fare era di cambiare il comportamento del showStack(int index) nella classe StackPanel.java da

public void showStack(int index) { 
    if ((index >= getWidgetCount()) || (index < 0) || (index == visibleStack)) { 
     return; 
    } 

    if (visibleStack >= 0) { 
     setStackVisible(visibleStack, false); 
    } 

    visibleStack = index; 
    setStackVisible(visibleStack, true); } 

a qualcosa di simile:

public void showStack(int index) { 

    if ((index >= getWidgetCount()) || index < 0) { 
     return; 
    } 

    visibleStack = index; 
    setStackVisible(visibleStack, !getWidget(visibleStack).isVisible()); 


    } 

Sono sicuro che è possibile per pulire questo un po ', ma questo ha fatto il trucco. Il motivo per cui le altre classi devono essere copiate nello stesso pacchetto è perché StackPanel.java fa riferimento a alcuni dei loro metodi che hanno solo visibilità del pacchetto.

+1

In GWT 2.5 non era più necessario copiare le altre classi. –