2013-10-09 16 views

Odpowiedz

11

A FlowPanel jest renderowany jako html '< div>', więc wszystko dodane do niego zostanie umieszczone w zależności od jego domyślnego wyświetlania.

Na przykład dzieci Widgety renderowane jako „< div>” jak Label zostanie umieszczony pionowo, ponieważ ich zachowanie domyślne jest jako blok, ale jeśli dodać TextBox zostanie wygenerowana jako „< input>”, którego domyślna wyświetlanie to blok inline.

Więc droga do dysponowania dzieci w A FlowPanel jest ustawienie właściwości display odpowiednio dla każdego z dzieci, grając z właściwością float lub jakiegokolwiek innego css uszczypnąć jak flexbox. Zazwyczaj projektanci gwt wykonują te style ustawień w szablonach ui-binder. Ale jeśli chcesz zrobić za pomocą kodu można to zrobić:

// Example of a flow panel with all elements disposed in vertical 
    FlowPanel verticalFlowPanel = new FlowPanel(); 
    TextBox textBox = new TextBox(); 
    Label label = new Label("Foo"); 
    textBox.getElement().getStyle().setDisplay(Display.BLOCK); 
    verticalFlowPanel.add(textBox); 
    verticalFlowPanel.add(label); 
    RootPanel.get().add(verticalFlowPanel); 

    // Example of a flow panel with all elements disposed in horizontal 
    FlowPanel horizontalFlowPanel = new FlowPanel(); 
    TextBox textBox2 = new TextBox(); 
    Label label2 = new Label("Foo"); 
    label2.getElement().getStyle().setDisplay(Display.INLINE_BLOCK); 
    horizontalFlowPanel.add(textBox2); 
    horizontalFlowPanel.add(label2); 
    RootPanel.get().add(horizontalFlowPanel); 
+0

jeśli wszystkie dzieci r z tego samego typu widżetu, jak etykiety, będzie płynąć w poziomie. Jeśli 1 widget to etykieta, a inne to Textbox, to będzie płynąć pionowo. Jakiekolwiek rozwiązanie znalazłem – Tum

+0

@Minh Hai, To nie prawda, zależy to od natury widgetu. Jeśli wszystkie widgety są etykietami, zawsze przepływają w pionie, chyba że ustawisz styl na inny. –

+0

Dziękuję za odpowiedź na pytanie, ale czy to prawda, że ​​działa dużo lepiej z FlowPanel niż VerticalPanel lub HorizontalPanel? od kiedy VP i HP używają tagu

? – Tum

0

Korzystanie display:block; dla dzieci to będzie OK. Znalazłem, że moja aplikacja działa znacznie szybciej po konwersji VerticalPanel na FlowPanel.