2013-10-09 51 views

回答

11

A FlowPanel呈现为html'< div>',因此添加到它的任何内容都将根据其默认显示进行定位。

例如孩子小部件呈现为“< DIV>”像Label将被垂直放置,因为它们的默认行为是为块,但如果添加一个TextBox将呈现为“<输入>”,并将其缺省显示内嵌块。

所以处置在FlowPanel孩子的方式是设置属性display适当为每个孩子,与float财产,或任何其他的CSS的调整像flexbox播放。通常gwt设计者在ui-binder模板中设置样式。但如果你想通过代码你可以做到这一点:

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

如果所有的孩子都来自像标签一样的小部件类型,它将会水平流动。如果一个小部件是标签,另一个是文本框,则它将垂直流动。任何任何我找到解决方案 – Tum

+0

@Minh海,这是不正确的,这取决于小部件的性质。如果所有的小部件都是标签,它们总是垂直流动,除非您将样式设置为另一个东西。 –

+0

Thax你为你的答案,但它是否真的与FlowPanel比垂直面板或水平面板运行多?自VP&HP使用

标签以来? – Tum

0

使用display:block;为孩子们,那么它会没事的。 将VerticalPanel转换为FlowPanel后,我发现我的应用运行速度更快。