2017-07-26 42 views
1

我有7列的Vaadin格列长文本: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()和,因为它需要在像素值的网格视图可以在各种浏览器和画面不同。

我需要做的是确保我的网格看起来在不同的屏幕和不同细胞值的方法相同。

+0

你的问题不是列扩展比例是如何包裹文字。 – efekctive

+0

请您详细说明一下吗? – Lena

+0

如果expandRatio成立的文本很短,它正在工作。如果文字太长,则展开比率会中断。尝试玩单元格的高度,看看它是否有帮助 – efekctive

回答

0

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

电网配置

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