2011-01-24 7 views
5

W GXT, mam kontrolę z ważnym dodatkiem do panelu dolnego elementu, w zasadzie tak:Jak wymusić odświeżanie/zmianę układu w Ext GWT (GXT)?

public class SamplePanel extends ContentPanel { 

ContentPanel panel = new ContentPanel();  

public SamplePanel() { 
    setBottomComponent(panel); 
} 

public void setVisible(boolean isVisible) { 
    panel.setVisible(isVisible); 
} 

Panel jest ustawiony jako „dolnego elementu”, ponieważ musi pozostać u u dołu widżetu i można go oglądać przez cały czas.

Problem polega na tym, że podczas widoczności panelu włącza się prawidłowo, obszar "dolnego komponentu" nie zmienia rozmiaru, aby się zmniejszyć i dopasować nowe wymiary dolnego obszaru.

Jednak zauważyłem, że dolny obszar zmienia rozmiar, gdy ręcznie zmieniam rozmiar widżetu za pomocą myszy.

Czy istnieje sposób, aby programowo wymusić odświeżanie/odświeżanie/zmianę układu ... cokolwiek, aby zmienić dolny komponent, aby odzwierciedlał nowy rozmiar jego zawartości?

Próbowałem wszystkie z nich i one nie działają:

public void setVisibility(boolean isVisible) { 
     panel.setVisible(isVisible); 
     doLayout(true); 
     recalculate(); 
     repaint(); 
    } 

Dzięki

Odpowiedz

8

W ostatnim GXT można zrobić.

this.layout(true); 

W przeciwnym razie możesz wystrzelić wydarzenie Events.Resize.

+0

Ta sztuczka do zmiany rozmiaru ognia jest tak subtelna, tak hackowata, taka ukryta, ale tak odrażające działa ... –

0

nie wiem o GXT, ale w GWT użyłbym jednego z force() lub forceLayout() metody na moim panelu. Być może istnieje podobny API do tego!

HTH.

+0

Hmm ... Nie mogę znaleźć metody .force() lub .forceLayout() w ContentPanel (nadklasie tej klasy, z której korzystam). Jaka klasa eksponuje .force()? – Cuga

0

This post twierdzi, że górne i dolne elementy do nie uczestniczy w układzie po wyrenderowaniu panelu i sugeruje ręczne obejście (za pomocą RowLayout) lub ręczne ustawienie rozmiaru panelu.

rozważyć znalezienie rozmiary od rodzica i nazywając onResize (szerokość, wysokość)

1

Czy próbowałeś użyć metody setLayoutOnChange() z ConentPanel?