隐藏行号时单元格下拉菜单不起作用

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 上注册 DefaultEditConfigurationDefaultEditBindings。这在我们的 NatTable Documentation|Editing 中有解释。而且我敢肯定我们还有一些涵盖 non-grid 合成中编辑的示例。