如何选择行TableViewer Java的颜色

时间:2014-09-09 10:48:15

标签: java plugins eclipse-plugin eclipse-rcp

我有一个tableviewer,我创建了一个上下文菜单,现在右键单击该行我有选项:为所选行着色。 菜单命令链接到我的插件项目中的类。我想选择行然后单击鼠标右键并单击上下文菜单选项:为所选行着色,然后使用此命令为该行的每个单元格中包含的所有文本着色,例如红色。

  public class ShowSelected extends AbstractHandler {

  @SuppressWarnings("unchecked")
  public Object execute(ExecutionEvent event) throws ExecutionException {




        //here should be my piece of code



    return null;
  }
}

如何为该行的每个单元格中的文本选择行和颜色?我每排都有5个细胞。

1 个答案:

答案 0 :(得分:1)

选择一行:

TableViewer viewer = .... get your viewer

RowData rowData = .... get the model row data that you want to select

viewer.setSelection(new StructuredSelection(rowData));

要对行进行着色,请使标签提供程序实现IColorProvider(除了它实现的任何其他内容)。您现在必须实现:

@Override
public Color getForeground(Object element)
{
  // TODO return foreground color or null
}

@Override
public Color getBackground(Object element)
{
  // TODO return background color or null
}

element参数是需要颜色的模型行数据。

您可以使用以下方式让表格查看器从标签提供者处请求更新的颜色:

viewer.update(rowData);

关于Color的说明 - 您创建的任何Color个对象必须在不再需要时处置。您应该最小化创建的Color个对象的数量。

如果您使用ColumnLabelProvider,那么已经实施了IColorProvider,因此您只需要覆盖getForeground / getBackground。例如:

@Override
public Color getForeground(Object element)
{
  RowData rowData = (RowData)element;

  // TODO if rowData should have a color return it, otherwise return null
}