Gwt 如何使FlowPanel像VerticalPanel一样垂直地流动其子对象?

Gwt 如何使FlowPanel像VerticalPanel一样垂直地流动其子对象?,gwt,uibinder,gwtp,Gwt,Uibinder,Gwtp,Google suggets使用FlowPanel代替VerticalPanel,因为VerticalPanel在标准模式下无法正常工作() 不起作用 那么,如何使FlowPanel像VerticalPanel一样垂直地流动其子项?一个FlowPanel被呈现为html“”,因此添加到它的任何内容都将根据其默认显示进行定位 例如,呈现为“”的子窗口小部件(如标签)将垂直放置,因为它们的默认行为是块,但如果添加文本框,它将呈现为默认显示为内联块的“” 因此,在FlowPanel中处理子项的方法是为

Google suggets使用FlowPanel代替VerticalPanel,因为VerticalPanel在标准模式下无法正常工作()

不起作用


那么,如何使FlowPanel像VerticalPanel一样垂直地流动其子项?

一个
FlowPanel
被呈现为html“”,因此添加到它的任何内容都将根据其默认显示进行定位

例如,呈现为“”的子窗口小部件(如
标签
)将垂直放置,因为它们的默认行为是块,但如果添加
文本框
,它将呈现为默认显示为内联块的“”

因此,在
FlowPanel
中处理子项的方法是为每个子项适当地设置属性
display
,使用
float
属性或任何其他css调整。通常,gwt设计师在ui活页夹模板中设置样式。但如果您想通过代码执行,您可以执行以下操作:

//所有元素垂直排列的流程面板示例
FlowPanel verticalFlowPanel=新的FlowPanel();
TextBox TextBox=新建TextBox();
标签=新标签(“Foo”);
textBox.getElement().getStyle().setDisplay(Display.BLOCK);
verticalFlowPanel.add(文本框);
垂直流程面板。添加(标签);
RootPanel.get().add(verticalFlowPanel);
//所有元件水平布置的流程面板示例
FlowPanel horizontalFlowPanel=新的FlowPanel();
TextBox textBox2=新的TextBox();
标签2=新标签(“Foo”);
label2.getElement().getStyle().setDisplay(Display.INLINE_块);
添加(文本框2);
水平流程面板。添加(标签2);
RootPanel.get().add(horizontalFlowPanel);

使用
显示:块对于儿童,那么就可以了。

我发现,将VerticalPanel转换为FlowPanel后,我的应用程序运行得更快。

如果所有子应用程序都来自同一小部件类型(如标签),则它将水平运行。如果一个小部件是label,另一个是Textbox,那么它将垂直流动。任何我找到的solution@MinhHai,那不是真的,这取决于小部件的性质。如果所有的小部件都是标签,它们总是垂直流动,除非你将样式设置为另一个东西。Thax你的答案,但它是否真的在FlowPanel中比VerticalPanel或HorizontalPanel运行得更频繁?由于VP&HP use tag?FlowPanel速度更快,尽管开发人员必须知道如何使用css技巧处理ui中的元素(也许gwt团队可以添加一些参数来自动完成)。垂直面板和水平面板之所以存在,是因为它们是开箱即用的。要注意性能问题,你需要有上百个孩子的大面板。我做了一个HorizontalFlowPanel来解决我的问题。看看:
myflowPanel.getElement().getStyle().setFloat(Float.NONE);