2016-11-14 182 views
0

当我单击一行时,整个行颜色会按预期更改。但鼠标所在的单元格会变为与该行其余部分不同的颜色。我试图阻止单元格变成与其余行不同的颜色。更改NatTable单元格选择颜色

我想弄清楚单元格选择颜色设置的位置以及如何删除它(让单元格选择使用单元格当前背景颜色)。

我已经尝试过失败之类的东西修改CellConfigAttribute或通过注销它:

getNatTable().getConfigRegistry(). 
    unregisterConfigAttribute(CellConfigAttributes.CELL_STYLE); 

,但没有运气。我不知道如何按顺序遍历所有样式,并查看从哪里生成。我本来希望看到类似于现有方法:

List<ConfigAttribute<IStyle>> list = getNatTable().getConfigRegistry(). 
    getConfigAttributesInOrder(); 

不幸的是我看到的是这样的事情,我不觉得我的情况非常有用:

List<String> strings = getNatTable().getConfigRegistry(). 
    getDisplayModeOrdering().getDisplayModeOrdering("SELECT"); 

我已阅读有一些一般建议,但没有看到明确的代码示例显示如何做到这一点的文档。那么,我应该确定细胞在哪里被修改,我该如何预防它?

我使用了完整的行选择的代码是:

public void foo() { 
    final SelectionLayer selectionLayer = glazedListsGridLayer. 
     getBodyLayerStack().getSelectionLayer(); 
    final RowOnlySelectionConfiguration<T> selectionConfig = 
     new RowOnlySelectionConfiguration<>(); 
    selectionLayer.addConfiguration(selectionConfig); 
    getNatTable().addConfiguration(new RowOnlySelectionBindings()); 
} 

回答

1

你所谈论的选择锚点。唯一需要做的是为DisplayMode.SELECT注册相同的样式,并标注您只注册DisplayMode.SELECT的SelectionStyleLabels.SELECTION_ANCHOR_STYLE。不同的风格是在DefaultSelectionStyleConfiguration注册

+0

明白了,谢谢! – ekjcfn3902039