2013-10-09 18 views

Antwort

11

Eine FlowPanel wird als html '< div>' gerendert, so dass alles, was hinzugefügt wird, abhängig von der Standardanzeige positioniert wird.

Zum Beispiel Kinder-Widgets wie ein gerenderte ‚< div>‘ wie Label vertikal positioniert werden, weil ihr Standardverhalten als ein Block ist, aber wenn Sie ein TextBox hinzufügen wird es als ‚< input>‘ gemacht werden, dessen Standard Anzeige ist Inline-Block.

So ist die Art, wie Kinder in einem FlowPanel setzt die Eigenschaft display angemessen für jede Kinder zu verfügen, mit der float Eigenschaft spielen, oder jedem anderen css zwicken wie flexbox. Normalerweise machen gwt-Designer diese Einstellung in ui-binder-Vorlagen. Aber wenn Sie mit dem Code tun möchten, können Sie dies tun:

// 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

Wenn alle untergeordneten Elemente vom selben Widgettyp wie Label stammen, wird es horizontal fließen. Wenn 1 Widget label & other ist Textfeld, dann wird es vertikal fließen. Irgendwelche irgendwelche fand ich eine Lösung – Tum

+0

@Minh Hai, das ist nicht wahr, es hängt von der Natur des widgets ab. Wenn alle Widgets Beschriftungen sind, fließen sie immer vertikal, es sei denn, Sie legen den Stil auf eine andere Sache fest. –

+0

Thax Sie für Ihre Antwort, aber ist es wahr, dass es viel schneller mit FlowPanel als VerticalPanel oder HorizontalPanel läuft? seit VP & HP

Tag verwenden? – Tum

0

Mit display:block; für Kinder, dann wird es in Ordnung sein. Ich habe festgestellt, dass meine App nach dem Konvertieren von VerticalPanel in FlowPanel viel schneller ausgeführt wird.