首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在FlowPanel中水平布局组件?

如何在FlowPanel中水平布局组件?
EN

Stack Overflow用户
提问于 2011-02-15 23:32:12
回答 2查看 14.1K关注 0票数 10

GWT文档recommends使用FlowPanel (在其子级上设置了float: left )作为布局组件的HorizontalPanel的替代。但如何做到这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-15 23:40:19

文档上就是这么说的:

并在其子级上使用

:left;CSS属性。

如何在GWT小部件上设置样式:

代码语言:javascript
复制
widget.getElement().getStyle().setProperty("float", "left");
票数 16
EN

Stack Overflow用户

发布于 2016-01-01 01:49:31

为了避免使用HorizontalPanel,我尽可能使用以下代码:

代码语言:javascript
复制
FlowPanel panel = new FlowPanel() {
    @Override
    public void add(Widget child) {
        super.add(child);
        child.getElement().getStyle().setDisplay(Display.INLINE_BLOCK);
    }
};

使用UIBinder时,我会这样做:

代码语言:javascript
复制
<ui:UiBinder ...>
    <ui:style>
        .vertical > * {
            display: inline-block;
        }
    </ui:style>

    <g:FlowPanel styleName="{style.vertical}">
        ...
    </g:FlowPanel>
</ui:UiBinder>

或者,您可以使用此HorizontalFlowPanel类替换所有HorizontalPanel引用:

代码语言:javascript
复制
public class HorizontalFlowPanel extends FlowPanel {
    private static final String BASIC_CLASS_NAME = "___" + Math.abs(Random.nextInt());
    private static final String HORIZONTAL_CLASS_NAME = BASIC_CLASS_NAME + "_H_";
    private static final String VERTICAL_CLASS_NAME = BASIC_CLASS_NAME + "_V_";

    static {
        newCssClass(HORIZONTAL_CLASS_NAME + " > *", "display: inline-block; vertical-align: top;");
        newCssClass(VERTICAL_CLASS_NAME + " > *", "display: block;");
    }

    private static int count = 0;

    private final String myClassName = BASIC_CLASS_NAME + count++;

    public HorizontalFlowPanel() {
        super();
        setStylePrimaryName(HORIZONTAL_CLASS_NAME + " " + myClassName);
    }

    public void setSpacing(int spacing) {
        newCssClass(myClassName + " > *", "margin-bottom: " + spacing + "px; margin-right: " + spacing + "px;");
    }

    public void setPadding(int padding) {
        newCssClass(myClassName, "padding: " + padding + "px;");
    }

    public static void newCssClass(String className, String content) {
        StringBuilder builder = new StringBuilder();
        builder.append("." + className + " { " + content + " }\n");

        Element style = DOM.createElement("style");
        style.setAttribute("type", "text/css");
        style.setInnerHTML(builder.toString());

        Document.get().getHead().appendChild(style);
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5005671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档