Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Vaadin网格如何在列中包装长文本_Java_Grid_Vaadin - Fatal编程技术网

Java Vaadin网格如何在列中包装长文本

Java Vaadin网格如何在列中包装长文本,java,grid,vaadin,Java,Grid,Vaadin,我有一个7列的瓦丁网格: 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(

我有一个7列的瓦丁网格:

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); 
Grid Grid=new Grid();
grid.setSizeFull();
grid.addColumn(User::getUserName).setCaption(“Name”).setExpandRatio(2);
grid.addColumn(用户::getLastName).setCaption(“姓氏”).setExpandRatio(1);
grid.addColumn(User::getAge).setCaption(“Age”).setExpandRatio(2);
grid.addColumn(User::getWork).setCaption(“Work”).setExpandRatio(1);
grid.addColumn(用户::getJobTitle).setCaption(“职务”).setExpandRatio(1);
grid.addColumn(用户::getSalary.setCaption(“工资”).setExpandRatio(1);
grid.addColumn(用户::getOther.setCaption(“其他”).setExpandRatio(1);
我需要的是以一种方式设置列宽——所有7个列都将显示在屏幕上。 现在,我的代码的工作方式是,如果任何列单元格的文本内容很长,最后的列不会显示在屏幕上,屏幕必须水平滚动

我尝试使用方法
setWidth()
,由于它采用像素值,网格视图在不同的浏览器和屏幕上可能会有所不同


我需要的是确保我的网格在不同的屏幕上以相同的方式显示,并且具有不同的单元格值

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

网格配置

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);
结果:


您的问题不在于列展开比,而在于如何环绕文本。请您进一步指定它好吗?如果文本较短,则展开比有效,它可以工作。如果文本太长,则展开比将中断。试着玩一下单元格的高度,看看它是否有用。幸运的是,我不能改变单元格的高度。我试过使用overflow:hidden,但效果不太好,谢谢。如果希望在单击小部件时可以选择行,则在列上调用setHandleWidgetEvents(true)也很有用。