SWT表具有交替的行颜色和排序和过滤

时间:2015-12-17 21:11:20

标签: user-interface swt jface tableviewer

我正在通过在标签提供程序中实现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;
    }
 }

在通过排序或过滤更改表之前,它很有效。谢谢你的帮助。

1 个答案:

答案 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; 
}

注意:对于大型表格来说这会很慢。