GWT复合动态高度调整大小

oth*_*man 2 gwt composite autoresize

我有一个GWT Composite,其中一些其他复合材料动态添加.我想make parent复合Resize自动适应其所有子窗口小部件的高度.我尝试为Composite设置setHeight("100%"),但这不起作用.任何想法如何实现这一功能?

谢谢.编辑:

final DockLayoutPanel dockLayoutPanel = new DockLayoutPanel(Unit.EM);
    dockLayoutPanel.setStyleName("EntryPanel");
    dockLayoutPanel.setSize("142px", "72px");
    initWidget(dockLayoutPanel);

    final VerticalPanel panel = new VerticalPanel();
    panel.setSize("140px", "72px");

    chckbxExport = new CheckBox("Export");
    putField(CommonPresenter.CONSTANTS.EXPORT, chckbxExport);

    dateBox = new DateBox();

    dateBox.addValueChangeHandler(new ValueChangeHandler<Date>() {
        @Override
        public void onValueChange(final ValueChangeEvent<Date> event) {
            dateChanged = true;
        }
    });

    panel.add(dateBox);

    final ListBox visibility = new ListBox();

    final Label lblVisibility = new Label("Visibility:");
    LabeledWidget vis = new LabeledWidget(lblVisibility, visibility);

    for (int i = 0; i < CommonPresenter.CONSTANTS.VISIBILITIES.length; i++) {
        visibility.addItem(CommonPresenter.CONSTANTS.VISIBILITIES[i]);
    }

    putField(CommonPresenter.CONSTANTS.VISIBILITY, visibility);

    panel.add(vis);
    panel.add(chckbxExport);

    dockLayoutPanel.add(panel);
Run Code Online (Sandbox Code Playgroud)

更新:设置复合宽度以填充所有可用的窗口水平空间:

 final int scrollBarWidth = 25;
// editPanel.setHeight("180px");
setWidth(Window.getClientWidth() - scrollBarWidth + "px");
// editPanel.setStyleName("EditorPanel");

Window.addResizeHandler(new ResizeHandler()
{
  public void onResize(ResizeEvent event)
  {
    int width = event.getWidth();
    setWidth(width - scrollBarWidth + "px");
  }
});
Run Code Online (Sandbox Code Playgroud)

Chr*_*her 5

以下是通常使用HTML + CSS的方法:

  • 创建父级,不要设置其高度(或将其设置为auto).
  • 然后添加孩子(只需确保你没有 为孩子使用absolute/fixed定位).
  • 如果需要,设置子项的高度.

然后将自动调整父级的高度.这与GWT Composites相同 - 只需确保哪些CSS(包括样式属性)适用于您的元素!如果不确定,请使用Firebug.

如果你需要更多的细节,那么你必须发布一些代码来展示你如何构建父复合(UiBinder,...?)