隐藏行号时,单元格下拉列表不起作用

时间:2018-07-18 10:19:05

标签: java nattable

我有一个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");

如何隐藏行号而不删除表格中的下拉列表?

1 个答案:

答案 0 :(得分:1)

不确定“隐藏行号”是什么意思。隐藏将暗示您要动态地执行此操作。而且,您所展示的方法不会动态地实现。

如果您要提供两种不同的组成,一种带有行号,另一种不带行号,则此方法是正确的。您使用其他组成。我不明白的是为什么您两次在不同的图层上设置列标题。

下一个问题,“不显示下拉菜单”是什么意思?您没有看到小三角形,还是组合框没有打开?我想你的意思是组合框在点击时不会打开。我想原因是您忘记在新创建的CompositeLayer上注册必要的编辑配置。 GridLayer是使用默认配置创建的。在CompositeLayer上,您未设置任何配置。因此,实际上甚至是打印,导出和交替的行颜色都无法使用,因为它们根本没有配置。

您需要在DefaultEditConfiguration上注册DefaultEditBindingsCompositeLayer。我们的NatTable Documentation|Editing中对此进行了说明。而且我敢肯定,我们还有一些示例涵盖了非网格合成中的编辑。