1

是否可以根据其中一列中的值更改行的字体颜色?

我的表有一列显示状态。该列的值将是失败或成功。

如果是成功,我希望该行字体为绿色。如果状态等于失败,我希望行字体为红色。

这可能吗,如果可以,我会把逻辑放在哪里。

编辑

这是我的表格查看器代码,我不会显示所有列,只显示几个

private void createColumns() {

  String[] titles = { "ItemId", "RevId", "PRL", "Dataset Name", "Printer/Profile" , "Success/Fail" };
  int[] bounds = { 100, 75, 75, 150, 200, 100 };

  TableViewerColumn col = createTableViewerColumn(titles[0], bounds[0], 0);
  col.setLabelProvider(new ColumnLabelProvider() {
     public String getText(Object element) {
        if(element instanceof AplotResultsDataModel.ResultsData) {
           return ((AplotResultsDataModel.ResultsData)element).getItemId();
        }          
        return super.getText(element); 
     }
  }); 

  col = createTableViewerColumn(titles[1], bounds[1], 1);
  col.setLabelProvider(new ColumnLabelProvider() {
     public String getText(Object element) {
        if(element instanceof AplotResultsDataModel.ResultsData) {
           return ((AplotResultsDataModel.ResultsData)element).getRevId();
        }          
        return super.getText(element); 
     }
  });    --ETC
4

1 回答 1

2

检查元素状态并返回您要使用的颜色

Viewer implementation        
    ColumnLabelProvider
        public Color getForeground(Object element)

供餐桌使用

TableItem
         setForeground(Color color) 
         setForeground(int index, Color color)

当您ColumnLabelProvider对每一列使用时,您需要为每一列覆盖 getForeground(Object element)。另一种方式,不要ColumnLabelProvider为每一列添加。

设置LabelProviderTableViewer水平。

TableViewer.setLabelProvider(ColumnLabelProvider labelProvider). 由于您没有在列级别设置标签提供程序,因此 tableviewer 从TableViewer级别设置的标签提供程序中获取每个单元格的显示文本、图像、字体、背景、前景等。

于 2012-09-27T02:42:55.833 回答