1

いずれかの列の値に基づいて行のフォントの色を変更することはできますか?

私のテーブルには、ステータスを表示する列があります。列の値は、失敗または成功のいずれかになります。

成功した場合、その行のフォントを緑色にしたいと思います。ステータスが 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
4

1 に答える 1

2

要素の状態を確認し、使用する色を返します

Viewer implementation        
    ColumnLabelProvider
        public Color getForeground(Object element)

テーブル用

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

各列に使用しているColumnLabelProviderため、各列のgetForeground(Object要素)をオーバーライドする必要があります。ColumnLabelProvider別の方法では、列ごとに追加しないでください。

レベルに設定LabelProviderTableViewerます。

TableViewer.setLabelProvider(ColumnLabelProvider labelProvider)。列レベルでラベルプロバイダーが設定されていないため、tableviewerは、TableViewerレベルで設定されたラベルプロバイダーから各セルの表示テキスト、画像、フォント、背景、前景などを取得します。

于 2012-09-27T02:42:55.833 に答える