【问题标题】:Can't adapt gridlayout to screen size (Vaadin 6.7.4)无法使网格布局适应屏幕尺寸(Vaadin 6.7.4)
【发布时间】:2012-06-09 08:12:25
【问题描述】:

我有一个 gridLayout 以适应用户屏幕大小的问题,我想创建一个 3 列和 2 行的 gridLayout,第一行将包含一个菜单,第二行将是使用面板的主体,并且第一列 X 第二行将包含一棵树,但我无法得到我想要的结果,此代码显示面板但不是全尺寸 这是我的代码,我找不到它为什么不起作用!!

@Override
public void init() {

    Window main = new Window("My App");
    main.setSizeFull();
    setMainWindow(main);

    VerticalLayout root = new VerticalLayout();
    main.setContent(root);
    main.getContent().setSizeFull();

    GridLayout grid = new GridLayout(3, 2);

    main.addComponent(grid);

    grid.setColumnExpandRatio(0, 0.13f);
    grid.setColumnExpandRatio(1, 0.86f);
    grid.setColumnExpandRatio(2, 0.0f);


    grid.setHeight(100, Sizeable.UNITS_PERCENTAGE);
    grid.setWidth(100,Sizeable.UNITS_PERCENTAGE);


    grid.addComponent(new Label("menu"), 0, 0, 0, 1);
    grid.addComponent(new Label("tree"), 1, 0, 1, 0);

    Panel pan = new Panel();
    pan.setWidth(100, Sizeable.UNITS_PERCENTAGE);
    pan.setHeight(100, Sizeable.UNITS_PERCENTAGE);

    VerticalLayout body = new VerticalLayout();
    body.setSizeFull();

    body.addComponent(pan);

    grid.addComponent(body, 1, 1, 1, 1);

}

【问题讨论】:

    标签: jakarta-ee vaadin


    【解决方案1】:

    在详细讨论您的问题之前,我想为您提供一个工具,可以帮助您了解组件在 Vaadin 中的扩展方式:

    • 在您用于运行应用程序的地址末尾添加“?debug”(例如 localhost/app/?debug”)
    • 将出现一个顶部带有按钮的小窗口。
    • 按 C 清除,然后按 AL 分析布局
    • 结果将显示组件树。您可以按加号浏览该树
    • 每次按下组件(标签、面板等)时,该组件都会在屏幕上突出显示。

    通过这个你可以看到我下面的代码有一个扩展整个屏幕的布局,一个在网格的最后两个单元格上扩展的面板和扩展宽度的标签

    调试模式记录在 Vaadin 的书中

    我认为组件扩展正确,但位置错误。在 vaadin 的书中检查 GridLayout 是如何工作的。 以下代码更改您的坐标并添加一个标签以向您显示面板确实采用了网格的正确单元格。此外,将 VerticalLayout 添加到面板以进行对齐似乎比其他方式更合乎逻辑:

    @Override
    public void init() {
    
    
        Window main = new Window("My App");
        main.setSizeFull();
                setMainWindow(main);
    
                VerticalLayout root = new VerticalLayout();
        main.setContent(root);
        main.getContent().setSizeFull();
    
        GridLayout grid = new GridLayout(3, 2);
    
        main.addComponent(grid);
    
        grid.setColumnExpandRatio(0, 0.13f);
        grid.setColumnExpandRatio(1, 0.86f);
        grid.setColumnExpandRatio(2, 0.0f);
    
    
        grid.setHeight(100, Sizeable.UNITS_PERCENTAGE);
        grid.setWidth(100,Sizeable.UNITS_PERCENTAGE);
    
    
                grid.addComponent(new Label("menu"), 0, 0, 2, 0);
    
                grid.addComponent(new Label("tree"), 0, 1);
    
                Panel pan = new Panel();
        pan.setWidth(100, Sizeable.UNITS_PERCENTAGE);
        pan.setHeight(100, Sizeable.UNITS_PERCENTAGE);
    
    
    
    
        VerticalLayout body = new VerticalLayout();
        body.setSizeFull();
        pan.addComponent(body);
    
        Label bodyLabel= new Label("body panel taking the 2 columns of the last row");
        bodyLabel.setSizeUndefined();
    
    
        body.addComponent(bodyLabel);
        body.setComponentAlignment(bodyLabel, Alignment.MIDDLE_CENTER);
    
        grid.addComponent(pan, 1,1 , 2, 1);
    
             }
    

    【讨论】:

    • 嘿,感谢您的帮助,我发现我的代码是正确的,问题是我在开始时添加到窗口中的插件桌面通知,它从根布局中占据了一个位置。我解决了问题再次感谢:))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多