我有一个NatTable和一些彩色行,通过标签“我的标签”。
"mylabel“由ConfigLabelAccumulator分配:
final AggregateConfigLabelAccumulator labelAccumulator = new AggregateConfigLabelAccumulator();
labelAccumulator.add(new ColumnLabelAccumulator());
labelAccumulator.add(new IConfigLabelAccumulator() {
@Override
public void accumulateConfigLabels(final LabelStack configLabels, final int columnPosition, final int rowPosition) {
if (<my condition>) configLabels.addLabelOnTop("mylabel");
}
});"mylabel“的样式是通过ConfigRegistry指定的,未选定行为”黄色“,选定行为"DARK_YELLOW”:
final ConfigRegistry configRegistry = new ConfigRegistry();
final Style style = new Style();
style.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR, GUIHelper.COLOR_YELLOW);
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, style, DisplayMode.NORMAL, "mylabel");
final Style styleSelected = new Style();
styleSelected.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR, Display.getDefault().getSystemColor(SWT.COLOR_DARK_YELLOW));
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, styleSelected, DisplayMode.SELECT, "mylabel");(sidenote)在条件(参见<my condition>)更改后,我执行natTable.doCommand(new VisualRefreshCommand());来立即刷新表。
它工作起来像一个魅力,但有一点:选定的细胞!
当<my condition>为true时,如何告诉选定的单元格具有不同的颜色
图片示例:
两行在两幅图片(=>暗黄色)中都被选中,只有选择锚是不同的。

牢房里有529..。选择时应该有不同的样式。

包含/E0001的细胞应该保持原样。
非常感谢你,德克!
我最终得到了这个解决方案,对SelectionLayer的DefaultSelectionLayerConfiguration和DefaultSelectionStyleConfiguration进行了调整。
this.selectionLayer = new SelectionLayer(glazedListsEventLayer, false);
this.selectionLayer.addConfiguration(new DefaultSelectionLayerConfiguration() {
@Override
protected void addSelectionStyleConfig() {
final DefaultSelectionStyleConfiguration dssc = new DefaultSelectionStyleConfiguration();
dssc.anchorBgColor = null;
dssc.anchorFgColor = null;
dssc.anchorBorderStyle = new BorderStyle(1, GUIHelper.COLOR_RED, LineStyleEnum.SOLID);
addConfiguration(dssc);
}
});发布于 2021-11-05 11:47:37
您指的是在选定的行/列中具有焦点的单元格。这被称为选择锚。选择锚被特别地通过标签SelectionStyleLabels.SELECTION_ANCHOR_STYLE进行样式,以区分在多个选择场景中具有焦点的所选单元格和其他选定单元。
尽管如此,您还需要为选择锚配置样式。但是,由于不可能为多个标签配置样式,我知道的唯一方法是删除选择锚的背景样式,以便从一般选择样式继承背景颜色。如果您想突出显示选择锚点,请使用其他样式位,例如设置边框。
IStyle anchorStyle = new Style();
anchorStyle.setAttributeValue(
CellStyleAttributes.BORDER_STYLE,
new BorderStyle(1, GUIHelper.COLOR_RED, LineStyleEnum.SOLID));
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_STYLE,
anchorStyle,
DisplayMode.SELECT,
SelectionStyleLabels.SELECTION_ANCHOR_STYLE);https://stackoverflow.com/questions/69852487
复制相似问题