隐藏行号时单元格下拉菜单不起作用
Cell dropdown does not work when hiding row numbers
我有一个 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");
如何在不删除 table 中的下拉列表的情况下隐藏行号?
不确定 "hiding row numbers" 是什么意思。隐藏意味着您想动态地执行此操作。而且您展示的方法不会是动态的。
如果你的意思是你想提供两种不同的组合,一种有行号,一种没有,这种方法是正确的。您使用不同的组合。我不明白的是为什么你用不同的层设置两次列 header。
下一个问题,"does not show the dropdown"是什么意思?没有看到小三角形或组合框没有打开吗?我猜你的意思是组合框不会在点击时打开。我想原因是你忘了在新创建的 CompositeLayer
上注册必要的编辑配置。 GridLayer
是使用默认配置创建的。在 CompositeLayer
上你没有设置任何配置。所以实际上即使是打印、导出和交替行颜色也不会工作,因为它们根本没有配置。
您需要在 CompositeLayer
上注册 DefaultEditConfiguration
和 DefaultEditBindings
。这在我们的 NatTable Documentation|Editing 中有解释。而且我敢肯定我们还有一些涵盖 non-grid 合成中编辑的示例。
我有一个 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");
如何在不删除 table 中的下拉列表的情况下隐藏行号?
不确定 "hiding row numbers" 是什么意思。隐藏意味着您想动态地执行此操作。而且您展示的方法不会是动态的。
如果你的意思是你想提供两种不同的组合,一种有行号,一种没有,这种方法是正确的。您使用不同的组合。我不明白的是为什么你用不同的层设置两次列 header。
下一个问题,"does not show the dropdown"是什么意思?没有看到小三角形或组合框没有打开吗?我猜你的意思是组合框不会在点击时打开。我想原因是你忘了在新创建的 CompositeLayer
上注册必要的编辑配置。 GridLayer
是使用默认配置创建的。在 CompositeLayer
上你没有设置任何配置。所以实际上即使是打印、导出和交替行颜色也不会工作,因为它们根本没有配置。
您需要在 CompositeLayer
上注册 DefaultEditConfiguration
和 DefaultEditBindings
。这在我们的 NatTable Documentation|Editing 中有解释。而且我敢肯定我们还有一些涵盖 non-grid 合成中编辑的示例。