1

我创建了一个带有 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));

基本上,桌子做我想做的事。只有一个例外:

该表如下所示:

截屏

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

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

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

4

1 回答 1

1

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

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

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

于 2014-11-14T08:58:56.037 回答