我有一个包含 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()
,由于它以像素为单位, GridView 在不同的浏览器和屏幕上可能会有所不同。
我需要的是确保我的网格在不同的屏幕和不同的单元格值上看起来相同。
最佳答案
最近我也遇到了同样的情况,这是我的解决方案:
网格配置
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);
结果:
关于java - Vaadin Grid 如何在列中换行长文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45330058/