Checkbox NatTable-仅当可编辑时才需要复选框
我是个新手。我已经仔细阅读了NatTable示例及其源代码,但没有找到解决问题的方法。 在NatTable中,我有一个列,该列应根据另一列的值提供一个复选框供选择。 我使用过Checkboxpainter、checkboxcelleditor、defaultbooleanconverter和IEditableRule。无论单元格是否可编辑,这都会呈现一个复选框,尽管它允许我仅在启用复选框时标记该复选框 但是,根据我们的要求,如果行不可选择,用户不应看到复选框。或者在最坏的情况下,应为不可选择的行呈现禁用复选框 有人能帮我吗 感谢和问候 Pradyumna找到了解决办法。Checkbox NatTable-仅当可编辑时才需要复选框,checkbox,nattable,Checkbox,Nattable,我是个新手。我已经仔细阅读了NatTable示例及其源代码,但没有找到解决问题的方法。 在NatTable中,我有一个列,该列应根据另一列的值提供一个复选框供选择。 我使用过Checkboxpainter、checkboxcelleditor、defaultbooleanconverter和IEditableRule。无论单元格是否可编辑,这都会呈现一个复选框,尽管它允许我仅在启用复选框时标记该复选框 但是,根据我们的要求,如果行不可选择,用户不应看到复选框。或者在最坏的情况下,应为不可选择的行
我必须编写一个定制的checkboxpainter(从可用的OOTB继承)并重写其getImage方法,以便为适当的单元格返回null有一个更好的解决方案,我刚刚在我的工作中应用于类似的情况 我通过向表中添加以下配置完成了此操作:
// make checkbox cells editable
configRegistry.registerConfigAttribute(EditConfigAttributes.CELL_EDITABLE_RULE, IEditableRule.ALWAYS_EDITABLE, DisplayMode.EDIT, CONFIG_LABEL_CHECKBOX);
// register the checkbox editor for DisplayMode.EDIT
configRegistry.registerConfigAttribute(EditConfigAttributes.CELL_EDITOR, new CheckBoxCellEditor(), DisplayMode.EDIT, CONFIG_LABEL_CHECKBOX);
// register the checkbox painter for DisplayMode.NORMAL
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_PAINTER, new CheckBoxPainter(), DisplayMode.NORMAL, CONFIG_LABEL_CHECKBOX);
// register the painter for empty cells in DisplayMode.NORMAL
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_PAINTER, new BackgroundPainter(), DisplayMode.NORMAL, CONFIG_LABEL_EMPTY);
基本上,这为可编辑复选框引入了配置标签CONFIG\u LABEL\u复选框,为空单元格引入了配置标签CONFIG\u LABEL\u EMPTY
现在,您只需将IConfigLabelAccumulator
附加到bodyDataLayer
:
bodyDataLayer.setConfigLabelAccumulator(new IConfigLabelAccumulator()
{
public void accumulateConfigLabels(LabelStack configLabels, int columnPosition, int rowPosition)
{
if(columnPosition == CHECKBOX_COLUMN_INDEX)
{
if(someCodeToCheckIfRowIsEditable(rowPosition))
{
configLabels.add(CONFIG_LABEL_CHECKBOX);
}
else
{
configLabels.add(CONFIG_LABEL_EMPTY);
}
}
}
}