Google 建议使用 FlowPanel 代替 VerticalPanel,因为 VerticalPanel 在标准模式 ( http://www.gwtproject.org/doc/latest/DevGuideUiPanels.html ) 下无法正常工作。
myflowPanel.getElement().getStyle().setFloat(Float.NONE);
不工作
那么如何让 FlowPanel 像 VerticalPanel 一样垂直流动它的孩子呢?
Google 建议使用 FlowPanel 代替 VerticalPanel,因为 VerticalPanel 在标准模式 ( http://www.gwtproject.org/doc/latest/DevGuideUiPanels.html ) 下无法正常工作。
myflowPanel.getElement().getStyle().setFloat(Float.NONE);
不工作
那么如何让 FlowPanel 像 VerticalPanel 一样垂直流动它的孩子呢?
AFlowPanel
呈现为 html '<div>',因此添加到其中的任何内容都将根据其默认显示进行定位。
例如,呈现为 '<div>' 的子小部件Label
将垂直定位,因为它们的默认行为是作为一个块,但如果添加 aTextBox
它将被呈现为一个默认显示为 inline-block 的 '<input>'。
因此,在 a 中处理子项的方法是为每个子项FlowPanel
设置适当的属性,使用该属性或任何其他 css 调整,如flexbox。通常,gwt 设计人员在 ui-binder 模板中执行此设置样式。但是如果你想通过代码来做,你可以这样做:display
float
// 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);
给孩子用display:block;
就可以了。将 VerticalPanel 转换为 FlowPanel 后,我发现我的应用程序运行得更快。