Java Vaadin网格日期渲染器不适用

Java Vaadin网格日期渲染器不适用,java,user-interface,web-applications,vaadin8,Java,User Interface,Web Applications,Vaadin8,我在Vaadin应用程序中有一个网格。对于一列,我想应用一个DateRenderer。 出现以下问题: 我做错了什么?《瓦丁之书》中的故事和我一样 更新 我得到了与这个问题的答案相同的结果。我的工作代码(具有多个渲染器): 最终网格=新网格(Signature.class); grid.setSelectionMode(grid.SelectionMode.SINGLE); grid.setSizeFull(); grid.setColumns(); grid.addColumn(“type”

我在Vaadin应用程序中有一个网格。对于一列,我想应用一个
DateRenderer
。 出现以下问题:

我做错了什么?《瓦丁之书》中的故事和我一样

更新

我得到了与这个问题的答案相同的结果。我的工作代码(具有多个渲染器):

最终网格=新网格(Signature.class);
grid.setSelectionMode(grid.SelectionMode.SINGLE);
grid.setSizeFull();
grid.setColumns();
grid.addColumn(“type”).setCaption(bundle.getString(“type”);
grid.addColumn(“文件名”).setCaption(bundle.getString(“文件名”));
addColumn(“createdTime”,新的日期呈现程序(“%1$td.%1$tm.%1$tY%1$tH:%1$tm:%1$tS”))
.setCaption(bundle.getString(“creationDate”);
addColumn(this::createCertificateLabel,new ComponentRenderer())
.setCaption(bundle.getString(“证书”))
.setDescriptionGenerator((DescriptionGenerator)签名->bundle.getString(“certificateSerialNumber”);
addColumn(this::createLink,new ComponentRenderer())
.setCaption(bundle.getString(“操作”);

您可以在
addColumn()
函数中执行此操作,该函数在
setRenderer()时执行

我想你也可以这样做,但我还没有测试过(因为
DateRenderer
实现了
Renderer
):


让我们看看签名:
Column-getColumn(String-columnId)
。它实际上不知道列的第二个类型参数是什么,因为它可以是任何类型。因此,通过方法
Column setRenderer(renderer)应用渲染器请共享网格初始化代码。@Morfic我更新了我的问题。Stefan已经介绍了
网格网格=新网格(Signature.class)
,而不是
网格=新网格()
与链接示例中一样,是导致此问题的原因。由于以及,推断的类型不匹配。感谢您的回答。我得到了相同的解决方案。因为Steffen的回答中有更多细节,我接受了他的回答,并对您的答案进行了投票。
final Grid<Signature> grid = new Grid<>(Signature.class);
grid.setSelectionMode(Grid.SelectionMode.SINGLE);
grid.setSizeFull();
grid.setColumns();
grid.addColumn("type").setCaption(bundle.getString("type"));
grid.addColumn("filename").setCaption(bundle.getString("filename"));
grid.addColumn("createdTime", new DateRenderer("%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS"))
        .setCaption(bundle.getString("creationDate"));
grid.addColumn(this::createCertificateLabel, new ComponentRenderer())
        .setCaption(bundle.getString("certificate"))
        .setDescriptionGenerator((DescriptionGenerator<Signature>) signature -> bundle.getString("certificateSerialNumber"));
grid.addColumn(this::createLink, new ComponentRenderer())
        .setCaption(bundle.getString("action"));
grid.addColumn( "myColumn", new DateRenderer( ... ) )
column.setRenderer( (Renderer)new DateRenderer( ... ) );
((Grid.Column<YourBean, Date>) grid.getColumn("xyz")).setRenderer(new DateRenderer())
grid.addColumn(item -> someExpressionThatReturnsDate, new DateRenderer());