当前位置: 首页 > 知识库问答 >
问题:

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

郦昆
2023-03-14

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

慎懿轩
2023-03-14

我认为您必须使用TableViewer调用来搜索元素以找到对象的索引。使用类似以下内容:

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

注意:对于一张大桌子来说,这会很慢。

 类似资料:
  • 问题内容: 在Java中,如何获得具有交替颜色的A?任何示例代码? 问题答案: 要自定义单元格的外观,您需要编写自己的实现。 的示例实现可能如下所示:(草绘,未经测试) 要使用此渲染器,请在您的构造函数中添加以下代码: 要基于所选对象并具有焦点来更改单元格的行为,请使用提供的布尔值。

  • 块和交易过滤器 接收所有新块把它们添加到区块链(false参数指定我们只需要块就ok,而不需要嵌入交易): Subscription subscription = web3j.blockObservable(false).subscribe(block -> { ... }); 接收所有新交易,把它们添加到块链: Subscription subscription = web3j.tra

  • 问题内容: 假设我有一个列表(或集合): 我想返回一个ImmutableList(Set),它以自然顺序对术语进行排序/分组,其中以“ src”开头的术语排在第一位,“ assoc”第二位,而“ dest”排在最后。如果一个术语不包含这些术语,则应将其从结果列表中删除。 因此,这里的结果是“ srcB”,“ srcT”,“ assocX”,“ destA”。 我想我可以通过Iterables.fi

  • 问题内容: 我想按客户端1、2、3,然后再次按客户端1、2、3等对我的结果进行排序。 有没有一种方法,而无需使用for循环或进行三个单独的查询?不仅如此,而且我正在处理分页数据,因此它需要返回x结果,但是要始终如一。 有任何想法吗?GROUP BY? 问题答案: 使用: MySQL没有任何排名功能,但是幸运的是您可以使用变量。关键是在client_id与先前的client_id不匹配时重置@row

  • Java 如何实现用 POI 输出 Excel 的时候,设置背景 n 行有色,n 行无色,按顺序循环下去,怎么搞呢?

  • 对于我们公司的数据库,我创建了一个工作排序/过滤功能,通过导入从另一张表中获取数据。通过某些搜索参数可以缩小搜索范围。 目前,数据库仍然在同一个工作表上,所以具有20.000行和18列信息的数据库仍然工作得又好又快。 然而,我最近从另一个工作表中获取信息,因此我不得不使用导入或查询。使用importrange的解决方案会在工作表上产生非常高的工作负载,我每隔几分钟就会收到延迟峰值。 我也尝试过使用