Java Vaadin 8.1.7带组件渲染器的网格

Java Vaadin 8.1.7带组件渲染器的网格,java,vaadin8,Java,Vaadin8,首先,对不起,我的英语很差。 我有一个处于惰性模式的网格(使用数据提供程序),它有一个列包含复选框,有时可见,有时不可见,取决于数据。 当它显示复选框列时,显示精细,但在对另一列进行排序后,复选框显示混合 如果不应显示,则在对其他列排序后显示。数据是正确的。这是我的密码: Grid.Column col = getGrid().addColumn(( EventStorage source ) -> { if ( source.getModel().hasDelegate()) {

首先,对不起,我的英语很差。 我有一个处于惰性模式的网格(使用数据提供程序),它有一个列包含复选框,有时可见,有时不可见,取决于数据。 当它显示复选框列时,显示精细,但在对另一列进行排序后,复选框显示混合

如果不应显示,则在对其他列排序后显示。数据是正确的。这是我的密码:

Grid.Column col = getGrid().addColumn(( EventStorage source ) -> {
    if ( source.getModel().hasDelegate()) {
        source.setVisibleCheckBox(Boolean.FALSE);
        source.setCheckBoxEnable(Boolean.FALSE);
    } else {
        source.setVisibleCheckBox(Boolean.TRUE);
        source.setCheckBoxEnable(Boolean.TRUE);
    }
    return source.getCheckBox();
}, new ComponentRenderer());

请给我一些建议。

也许你应该使用
addComponentColumn()
?所以不要
addColumn(..)
&
ComponentRenderer
。像

Grid.Column col = getGrid().addComponentColumn(( EventStorage source ) -> {
   if ( source.getModel().hasDelegate()) {
      source.setVisibleCheckBox(Boolean.FALSE);
      source.setCheckBoxEnable(Boolean.FALSE);
   } else {
      source.setVisibleCheckBox(Boolean.TRUE);
      source.setCheckBoxEnable(Boolean.TRUE);
   }
   return source.getCheckBox();
});

混合复选框是什么意思?例如,您有两列A和B,分别有A1-B1、A2-B2、A3-B3行,排序后它们彼此不匹配?如:A2-B3 etcIMO,应在lambda中创建复选框。如果您不这样做,那么您需要事先为每个数据行创建一个复选框组件,这是一种资源浪费:)Vaadin团队认识到这个问题。这是一个框架问题。@Zaosz好的,你有这个问题描述的链接吗?@Zaosz有可能有一些图片/问题的更详细描述吗?1.我甚至不能用
addColumn(..)
编译它,只能用
addComponentColumn()
编译,而不用
ComponentRenderer
。2.我看不出排序有什么问题?因此,图像将非常有帮助。