Vaadin Grid如何在列中包装长文本

时间:2017-07-26 14:34:45

标签: java grid vaadin

我有一个包含7列的Vaadin网格:

Grid grid = new Grid<>();
grid.setSizeFull();

grid.addColumn(User::getUserName).setCaption("Name").setExpandRatio(2);
grid.addColumn(User::getLastName).setCaption("Last Name").setExpandRatio(1);                    
grid.addColumn(User::getAge).setCaption("Age").setExpandRatio(2);
grid.addColumn(User::getWork).setCaption("Work").setExpandRatio(1);
grid.addColumn(User::getJobTitle).setCaption("Job Title").setExpandRatio(1);
grid.addColumn(User::getSalary).setCaption("Salary").setExpandRatio(1);
grid.addColumn(User::getOther).setCaption("Other").setExpandRatio(1); 

我需要的是以某种方式设置列宽 - 所有7都将显示在屏幕上。 现在使用我的代码,它的工作方式是,如果任何列单元格的文本内容非常长 - 屏幕上不显示最后一列,并且屏幕必须水平滚动。

我尝试使用方法setWidth(),因为它以像素为单位取值,网格视图在各种浏览器和屏幕上可能会有所不同。

我需要的是确保我的网格在不同的屏幕上以及不同的单元格值看起来相同。

1 个答案:

答案 0 :(得分:1)

最近我遇到了同样的情况,这是我的解决方案:

网格配置

Grid<Item> gridItem = new Grid<>();
gridItem.setRowHeight(50.0);

列配置

gridItem.addComponentColumn(item -> {
            Label label = new Label();
            label.setValue(item.getText());
            label.setWidthUndefined();
            label.setStyleName(ValoTheme.LAYOUT_HORIZONTAL_WRAPPING);
            return label;
        })
        .setCaption("Item")
        .setWidth(380.0);

结果:

enter image description here