SWT - Строка таблицы - Изменение цвета шрифта

Можно ли изменить цвет шрифта для строки на основе значения в одном из столбцов?

В моей таблице есть столбец, в котором отображается статус. Значение столбца будет либо Failed, либо Success.

Если это успех, я бы хотел, чтобы шрифт этой строки был зеленым. Если статус равен Failed, я хочу, чтобы шрифт строк был красным.

Возможно ли это, если да, то где бы я поместил логику.

ИЗМЕНИТЬ

Вот мой код Table Viewer, я не буду показывать все столбцы, только пару

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

person jkteater    schedule 26.09.2012    source источник
comment
Краткий ответ - можно. Подробный ответ зависит от того, используете ли вы таблицу SWT или средство просмотра таблиц JFace.   -  person Eugene    schedule 27.09.2012


Ответы (1)


Проверьте состояние элемента и верните цвет, который вы хотите использовать

Viewer implementation        
    ColumnLabelProvider
        public Color getForeground(Object element)

Для использования в таблице

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

Поскольку вы используете ColumnLabelProvider для каждого столбца, вам необходимо переопределить getForeground (элемент объекта) для каждого столбца. Другой способ: не добавляйте ColumnLabelProvider для каждого столбца.

Установите LabelProvider на уровне TableViewer.

TableViewer.setLabelProvider(ColumnLabelProvider labelProvider). Поскольку у вас нет поставщика меток, установленного на уровне столбца, средство просмотра таблиц получает отображаемый текст, изображение, шрифт, фон, передний план и т. д. для каждой ячейки из поставщика меток, установленного на уровне TableViewer.

person sambi reddy    schedule 27.09.2012
comment
sambi - Должен ли я изменить его в реализации Viewer и TableItem или вы говорите одно или другое? Я также использую просмотрщик таблиц. Должен ли я проверять и менять цвет в каждом столбце? Я собираюсь вставить свой код столбца выше. Не могли бы вы показать мне, где и как реализовать логику - person jkteater; 28.09.2012
comment
Вы видите, что я использую ColumnLabelProvider. Единственная причина, по которой я использую это, заключается в том, что это был первый пример настройки моего средства просмотра таблиц. Если вы считаете, что есть лучший способ настроить столбцы, сообщите мне об этом. Я очень новичок в этом и все еще пытаюсь узнать как можно больше об этом. Можете ли вы привести пример того, как реализовать любой метод, который вы предложили выше? - person jkteater; 28.09.2012
comment
я разобрался - спасибо - person jkteater; 28.09.2012