【问题标题】:Vaadin: No Horizontal Scrollbar in HorizontalSplitPanelVaadin:Horizo​​ntalSplitPanel 中没有水平滚动条
【发布时间】:2016-11-22 18:27:59
【问题描述】:

我的 Vaadin 应用中有一个 Horizo​​ntalSplitPanel。调整浏览器大小时如何获得水平滚动条?

在此面板中,左侧有一个菜单,右侧有一个内容。 对于内容,我有一个用于 MainLayout 的 VerticalLayout。这包含一些 Horizo​​ntalLayouts。

在我的 Servlet 类中:

    private HorizontalSplitPanel split = new HorizontalSplitPanel();
    split.setSizeFull();
    ...
    private VerticalLayout mainLayout = new VerticalLayout();
    private HorizontalLayout xyz = new VerticalLayout();
    mainLayout.addComponent(xyz);
    split.addComponent(mainlayout);

Horizo​​ntalSplitPanel 的 Vaadin 文档说:

  • 如果需要水平滚动条,您可以将内容放在面板中,该面板可以在两个方向都有滚动条。*

所以,我想将我的 Mainlayout 放在面板中,并将面板添加到 Horizo​​ntalSplitPanel 的内容部分(右侧),但是: 我只能将 Horizo​​ntalLayouts 添加到面板。

这个:

    Panel panel = new Panal();
    panel.addComponent(mainLayout);

不工作。

有人可以帮我吗?我只从 Vaadin 论坛找到了旧答案,它们不起作用:(

【问题讨论】:

    标签: layout scrollbar vaadin panel horizontal-scrolling


    【解决方案1】:

    摘自Vaadin Panel documentation

    滚动面板

    内容 通常,如果面板在 一个方向,因为它默认为垂直方向,它将适合 内容并随着内容的增长而增长。但是,如果它有一个固定的 或百分比大小,其内容变得太大而无法放入 内容区域,将出现一个滚动条用于特定方向。 面板中的滚动条由浏览器本地处理 溢出:CSS 中的自动属性。

    按照上述指南,您可以执行以下操作:

    public class MyUi extends UI {
        private final static Logger logger = 
        @Override
        protected void init(VaadinRequest request) {
            Layout content = new VerticalLayout();
            content.setSizeFull();
            setContent(content);
    
            // add content to make the scrollbar appear
            VerticalLayout rightLayout = new VerticalLayout();
            for (int i = 0; i < 100; i++) {
                rightLayout.addComponent(new Button("Button " + i));
            }
    
            Panel rightPanel = new Panel(rightLayout);
            rightPanel.setSizeFull(); // <= this is important
    
            MenuBar menuBar = new MenuBar();
            menuBar.addItem("Some item", null);
            content.addComponent(new HorizontalSplitPanel(new VerticalLayout(menuBar), rightPanel));
        }
    }
    

    导致垂直滚动

    同样,对于水平滚动(只需将VerticalLayout rightLayout = new VerticalLayout(); 替换为HorizontalLayout

    【讨论】:

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