【问题标题】:Horizontal scrollbar in vaadin is not appearingvaadin 中的水平滚动条没有出现
【发布时间】:2017-02-06 04:13:01
【问题描述】:

我尝试让 vaadin 视图添加水平滚动条,但没有任何结果。请你帮助我好吗。这是我的观点的完整代码:

public class TestView extends CssLayout implements View {
/**
 * 
 */
private static final long serialVersionUID = 1L;

protected void init() {
    Layout content = new VerticalLayout();
    content.setSizeFull();
    addComponent(content);

    // add content to make the scrollbar appear
    HorizontalLayout rightLayout = new HorizontalLayout();
    for (int i = 0; i < 100; i++) {
        rightLayout.addComponent(new Button("Button " + i));
    }

    Panel rightPanel = new Panel(rightLayout);
    rightPanel.setSizeFull();

    content.addComponent(rightPanel);
}

public TestView() {
    super();
    init();
}

@Override
public void enter(ViewChangeEvent event) {
    // TODO Auto-generated method stub

}

}

【问题讨论】:

  • 请检查外部CssLayout的大小。它的大小不能是未定义的。具有相对大小(例如 100%)的组件在布局中具有固定或相对但不是未定义的大小,这一点很重要。在 Panel 内部使用固定或未定义的大小,以便内容可以大于 Panel 并出现滚动条。
  • 感谢您的回答。它可以工作,但是为了出现滚动条(只是水平的),我需要刷新页面。有没有办法动态添加这个滚动条?我添加了这样的部分: setWidth(UI.getCurrent().getPage().getBrowserWindowWidth(), Unit.PIXELS); setHeight(UI.getCurrent().getPage().getBrowserWindowHeight() - 38, Unit.PIXELS);

标签: layout vaadin horizontal-scrolling


【解决方案1】:

我认为你应该有 Extended VerticalLayout 而不是 CSSLayout,所以是这样的:

public class TestView extends VerticalLayout implements View {
/**
 * 
 */
private static final long serialVersionUID = 1L;

protected void init() {
    setSizeFull();

    // add content to make the scrollbar appear
    HorizontalLayout rightLayout = new HorizontalLayout();
    for (int i = 0; i < 100; i++) {
        rightLayout.addComponent(new Button("Button " + i));
    }

    Panel rightPanel = new Panel(rightLayout);
    rightPanel.setSizeFull();

    addComponent(rightPanel);
}

public TestView() {
    super();
    init();
}

@Override
public void enter(ViewChangeEvent event) {
    // TODO Auto-generated method stub

}
}

【讨论】:

    【解决方案2】:

    我已经添加了监听器,它工作正常:

    Page.getCurrent().addBrowserWindowResizeListener(event -> {
            setWidth(UI.getCurrent().getPage().getBrowserWindowWidth(), Unit.PIXELS);
            setHeight(UI.getCurrent().getPage().getBrowserWindowHeight(), Unit.PIXELS);
        });
    

    【讨论】:

      猜你喜欢
      • 2014-07-22
      • 2012-05-06
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      • 2016-05-28
      相关资源
      最近更新 更多