NatTable - CheckBoxCellEditor 和 CheckBoxPainter 在单击时显示文本

NatTable - CheckBoxCellEditor & CheckBoxPainter displaying the text on single click

我正在使用 CheckBoxCellEditor 和 CheckBoxPainter 在 NatTable 中显示布尔属性,如下所示

问题:使用鼠标单击单元格时,它会将布尔值显示为如下所示的文本,而不是将状态重置为 false。

下面是我的代码片段,

//register the column
ColumnOverrideLabelAccumulator columnLabelAccumulator = new ColumnOverrideLabelAccumulator(
                bodyLayer.getBodyDataLayer());
        bodyLayer.getBodyDataLayer().setConfigLabelAccumulator(columnLabelAccumulator);
        columnLabelAccumulator.registerColumnOverrides(0, COLUMN_BOOKMARK_LABEL);

//added the CheckBoxCellEditor and CheckBoxCellPainter to configuration.
     natTable.addConfiguration(new AbstractRegistryConfiguration() {
                    @Override
                    public void configureRegistry(IConfigRegistry configRegistry) {
                        configRegistry.registerConfigAttribute(EditConfigAttributes.CELL_EDITOR, new CheckBoxCellEditor(), DisplayMode.NORMAL,
                                COLUMN_BOOKMARK_LABEL);

                        configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_PAINTER, new CheckBoxPainter(ImageUtil.getImage("Images.BookmarkChecked"),
                                ImageUtil.getImage("Images.BookmarkUnchecked")),
                                DisplayMode.NORMAL, COLUMN_BOOKMARK_LABEL);

                        configRegistry.registerConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER,
                                new DefaultBooleanDisplayConverter(), DisplayMode.NORMAL, COLUMN_BOOKMARK_LABEL);
                    }
                });

我还让 rowselectionProvider 将默认选择设置为第一行,并根据行选择刷新属性 UI。

关于缺少什么的任何指示link.TIA

似乎有一位为 DisplayMode.SELECT 注册的油漆工被占用,而不是为您在 DisplayMode.NORMAL 中的标签注册的油漆工。添加此行应该可以解决您的问题

configRegistry.registerConfigAttribute(
    CellConfigAttributes.CELL_PAINTER, 
    new CheckBoxPainter(
        ImageUtil.getImage("Images.BookmarkChecked"),
        ImageUtil.getImage("Images.BookmarkUnchecked")),
    DisplayMode.SELECT, 
    COLUMN_BOOKMARK_LABEL);

我不确定您其余的样式配置。通常,配置是分层的。所以需要详细检查为什么使用另一个画家而不是用于NORMAL模式的画家。