我有一个Nattable,可以隐藏他的行号。现在,当我隐藏行号时,它不会在单元格中显示下拉列表。
我使用以下代码隐藏行号:
if (showRowNumbers) {
compositeGridLayer = new GridLayer(bodyLayer, finalHeaderRow, rowHeaderLayer, cornerLayer);
} else {
compositeGridLayer = new CompositeLayer(1, 2);
compositeGridLayer.setChildLayer(GridRegion.COLUMN_HEADER, columnHeaderLayer, 0, 0);
compositeGridLayer.setChildLayer(GridRegion.BODY, bodyLayer, 0, 1);
compositeGridLayer.setChildLayer(GridRegion.COLUMN_HEADER, finalHeaderRow, 0, 0);
}
要将下拉列表添加到单元格中,我们使用以下命令进行注册:
ComboBoxCellEditor comboBoxCellEditor = new ComboBoxCellEditor(phases, -1);
comboBoxCellEditor.setMultiselect(false);
comboBoxCellEditor.setUseCheckbox(false);
comboBoxCellEditor.setFreeEdit(false);
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_PAINTER, new ComboBoxPainter(),
DisplayMode.NORMAL, "phaseDropDown");
comboBoxCellEditor.setIconImage(GUIHelper.getImage("plus"));
configRegistry.registerConfigAttribute(EditConfigAttributes.CELL_EDITOR, comboBoxCellEditor, DisplayMode.EDIT,
"phaseDropDown");
configRegistry.registerConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER, new DefaultDisplayConverter() {
@Override
public Object canonicalToDisplayValue(Object canonicalValue) {
return super.canonicalToDisplayValue(canonicalValue);
}
}, DisplayMode.NORMAL, "phaseDropDown");
如何隐藏行号而不删除表格中的下拉列表?
答案 0 :(得分:1)
不确定“隐藏行号”是什么意思。隐藏将暗示您要动态地执行此操作。而且,您所展示的方法不会动态地实现。
如果您要提供两种不同的组成,一种带有行号,另一种不带行号,则此方法是正确的。您使用其他组成。我不明白的是为什么您两次在不同的图层上设置列标题。
下一个问题,“不显示下拉菜单”是什么意思?您没有看到小三角形,还是组合框没有打开?我想你的意思是组合框在点击时不会打开。我想原因是您忘记在新创建的CompositeLayer
上注册必要的编辑配置。 GridLayer
是使用默认配置创建的。在CompositeLayer
上,您未设置任何配置。因此,实际上甚至是打印,导出和交替的行颜色都无法使用,因为它们根本没有配置。
您需要在DefaultEditConfiguration
上注册DefaultEditBindings
和CompositeLayer
。我们的NatTable Documentation|Editing中对此进行了说明。而且我敢肯定,我们还有一些示例涵盖了非网格合成中的编辑。