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模式的画家。
我正在使用 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模式的画家。