我创建了一个带有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)一样)?
答案 0 :(得分:1)
这不是您需要检查的标签,选择它是DisplayMode。因此,如果选择行,则不要突出显示列标题,因此在注册DisplayMode.NORMAL时需要为DisplayMode.SELECT注册相同的样式配置。
如果您只想在列标题中突出显示选择锚点,则需要将自定义IConfigLabelAccumulator注册到连接到SelectionLayer的列标题的DataLayer,并添加自定义标签以防列表标题中的单元格与选择锚点在同一列中。
仅突出显示选择锚点,NatTable本身没有默认值。虽然应该很容易添加。随意为此创建一个增强票,甚至贡献。 :)