我正在通过在标签提供程序中实现ITableColorProvider来向SWT / JFace表添加交替行颜色,但是当对表进行排序或过滤时,表行颜色不会保持其位置。所以我在白色行旁边有白色行,灰色行旁边有灰色行。我猜这种情况正在发生,因为我的元素正在重新排列,行颜色随之而来。这是我正在使用的,当表被过滤或排序时不起作用:
public Color getBackground(Object element)
{
ArrayList list = (ArrayList) tableViewer.getInput();
int index = list.indexOf(element);
if ((index % 2) == 0)
{
return gray;
}
else
{
return null;
}
}
在通过排序或过滤更改表之前,它很有效。谢谢你的帮助。
答案 0 :(得分:1)
我认为您必须使用TableViewer
getElementAt
调用来搜索元素以查找对象的索引。使用类似的东西:
private int findElementIndex(Object element)
{
for (int i = 0; i < tableViewer.getTable().getItemCount(); i++) {
Object elementAt = tableViewer.getElementAt(i);
if (elementAt.equals(element))
return i;
}
return -1;
}
注意:对于大型表格来说这会很慢。