3

我正在尝试在 java gwt 中使用 flowpanel,但是当我添加不同的小部件时,面板会在新行中添加每个小部件,这是我设置 flowPanel 的方式

 public class Test extends Composite {
   public abstract class SomeWidget<T> extends Composite {
      ...
   }

   public class SomeStringWidget extends SomeWidget<String> {
      ...
   }


   public void setWidget() {
     FlowPanel fp = new FlowPanel();
     fp.setWidth("100%");
     fp.add(new SomeStringWidget());
     fp.add(new SomeStringWidget());
     ...
   }
 }

为什么每个小部件都设置在新行中,而不是像流程面板那样,将小部件添加到一行中,直到没有更多空间,然后将它们添加到新行中?

4

3 回答 3

7

Flow Panel 使用 Style GWT-FlowPanel 生成一个 DIV 元素。如果您希望您的内部小部件是内联的,请使用以下 CSS 制作内部小部件的 CSS:

.SomeStringWidget {
   display: inline;
}

或者

.SomeStringWidget {
    display: inline-block; 
}

或者

.SomeStringWidget {
   float: left;
}

在您的小部件中,在构造函数中设置 CSS 类 .SomeStringWidget。

public SomeStringWidget {
    this.setStyleName("SomeStringWidget");
}
于 2013-02-04T12:40:01.827 回答
3

我遇到了同样的问题并将样式分配给 FlowPanel 小部件以将小部件对齐一行。这将解决您的问题。

FlowPanel fp = new FlowPanel();
fp.setStyleName("flowPanel_inline");

样式.css

.flowPanel_inline
{
    display:inline;
}

此外,您还必须在添加的元素中设置相同的样式。

于 2013-02-04T12:09:51.807 回答
0

If your SomeStringWidget is a Label, then it will always be a new line. If you don't want the newline, use InlineLabel.

于 2015-07-24T08:11:02.803 回答