我尝试了不同的东西但是我没有让它成为一个水平的Scrollbar,我调整浏览器的大小。
使用Vaadin我有一个HorizontalSplitPanel。 在此面板中,我左侧有一个菜单,右侧有内容。 对于内容我有MainLayout的VerticalLayout。这包含一些Horizental布局。
在我的Servlet类中:
private HorizontalSplitPanel split = new HorizontalSplitPanel();
split.setSizeFull();
...
private VerticalLayout mainLayout = new VerticalLayout();
private HorizontalLayout xyz = new VerticalLayout();
mainLayout.addComponent(xyz);
split.addComponent(mainlayout);
VaadinDocumentationFürLevelPanelSPlit说:
如果需要水平滚动条,您可以将内容放在面板中,该面板可以在两个方向上都有滚动条。
所以,我想将我的Mainlayout放入Panal并将Panel添加到HorizontalPanelSPlit的我的内容部分(右侧),但是: 我只能将HorizontalLayouts添加到Panel。
Panel panel = new Panal();
panel.addComponent(mainLayout);
不起作用。
任何人都可以帮助我吗?我发现7岁的Vaadim Board的答案不起作用:(
答案 0 :(得分:3)
滚动小组
内容通常,如果面板中的大小未定义 一个方向,因为它默认垂直,它将适合的大小 内容随着内容的增长而增长。但是,如果它有固定的 或百分比大小及其内容变得太大而不适合 内容区域,将显示特定方向的滚动条。 面板中的滚动条由浏览器本地处理 overflow:CSS中的auto属性。
遵循上述指导原则,您可以执行以下操作:
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
)