【问题标题】:Vaadin Grid how to wrap long text in columnsVaadin Grid如何在列中换行长文本
【发布时间】:2018-01-01 23:01:44
【问题描述】:

我有一个 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() 方法,由于它以像素为单位,因此网格视图在各种浏览器和屏幕上可能会有所不同。

我需要确保我的网格在不同的屏幕和不同的单元格值上看起来是一样的。

【问题讨论】:

  • 你的问题不是列扩展率是如何环绕文本。
  • 您能详细说明一下吗?
  • 如果文本很短,expandRatio 保持不变,它正在工作。如果文本太长,则扩展比例会中断。尝试调整单元格的高度,看看是否有帮助
  • 不幸的是,我无法更改单元格的高度。我试过使用溢出:隐藏,但没有用

标签: java grid vaadin


【解决方案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);

结果:

【讨论】:

  • 很好的答案,谢谢。如果您希望在单击小部件时可以选择该行,则在该列上调用 setHandleWidgetEvents(true) 也很有用。
猜你喜欢
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多