2010-11-15 11 views
5

Czy istnieje element taki jak StackPanel lub DecoratedStackPanel, który ma możliwość wyświetlania więcej niż jednego panelu w stosie na raz? Chciałbym mieć opcję rozwijania wszystkich lub zwijania dowolnej liczby paneli, które chcę.Ograniczenie GWT StackPanel?

Odpowiedz

3

OK, ponieważ nie otrzymałem odpowiedzi, to właśnie dla mnie zadziałało. Google nie ułatwia rozbudowy istniejących paneli w celu dodania lub modyfikacji funkcjonalności, więc to, co zrobiłem, to pobrałem źródło, skopiowałem StackPanel.java, DecoratorPanel.java i DecoratedStackPanel.java do paczki w moim projekcie gwt.

Główną zmianą ja naprawdę potrzebny zrobić, to zmienić zachowanie showStack(int index) w klasie StackPanel.java z

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

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

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

aby coś takiego:

public void showStack(int index) { 

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

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


    } 

Jestem pewien, że jest to możliwe trochę to posprzątać, ale to wystarczyło. Powód, dla którego inne klasy muszą zostać skopiowane do tego samego pakietu, jest taki, że StackPanel.java odwołuje się do niektórych metod, które mają tylko widoczność pakietu.

+1

W GWT 2.5 nie było już potrzeby kopiowania innych klas. –