RowSelectionModel显示所有列标题单元格

时间:2014-11-12 08:05:38

标签: eclipse nebula nattable

我创建了一个带有RowSelectionModel和RowSelectionProvider的NatTable:

  dataProvider = new ListDataProvider<>(rowData, columnAccessor);
  bodyDataLayer = new DataLayer(dataProvider);
  glazedListEventsLayer = new GlazedListsEventLayer<>(bodyDataLayer, rowData);
  columnReorderLayer = new ColumnReorderLayer(glazedListEventsLayer);
  columnHideShowLayer = new ColumnHideShowLayer(columnReorderLayer);
  selectionLayer = new SelectionLayer(columnHideShowLayer);
  ViewportLayer viewportLayer = new ViewportLayer(selectionLayer);

  selectionProvider = new RowSelectionProvider<>(selectionLayer, dataProvider, true);
  selectionLayer.setSelectionModel(new RowSelectionModel<>(selectionLayer, dataProvider, idAccessor, false));

基本上,表格按照我的意愿行事。只有一个例外:

表格如下:

Screenshot

按照预期,该表将行显示为选中(1)。它还突出了实际选择的单元格(2),这是非常好的。但是,它将整个表列标题呈现为选中(3)。我不希望这样。我想要么不要突出显示标题单元格,或者(甚至更好:)我只想要突出显示光标单元格(2)的列标题单元格。

我认为可能有一个配置标签附加到列标题单元格,导致突出显示(所以我可以更改这种标签的样式以摆脱突出显示),但COLUMN_HEADER是唯一的配置标签,我在调试时可以看到。

所以,我现在有点卡住了。是什么原因导致标题单元格突出显示,如何更改此行为?是否可以仅突出显示光标单元的标题(与所选行的光标单元格(2)一样)?

1 个答案:

答案 0 :(得分:1)

这不是您需要检查的标签,选择它是DisplayMode。因此,如果选择行,则不要突出显示列标题,因此在注册DisplayMode.NORMAL时需要为DisplayMode.SELECT注册相同的样式配置。

如果您只想在列标题中突出显示选择锚点,则需要将自定义IConfigLabelAccumulator注册到连接到SelectionLayer的列标题的DataLayer,并添加自定义标签以防列表标题中的单元格与选择锚点在同一列中。

仅突出显示选择锚点,NatTable本身没有默认值。虽然应该很容易添加。随意为此创建一个增强票,甚至贡献。 :)