Problemas com DefaultTableCellRenderer e AbstractTableModel

Boas pessoal,

Estou a iniciar nisso de jtable e li alguns topicos sobre isso mas estou bloqueado nisso de pintar a minha jtable com o renderer. Segue aqui o meu codigo:

[code]
package Utils;

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

/**
*
*/
public class CreateTableObjective extends AbstractTableModel {

private final Object[][] data;
private final String[] header;
private final int columnEditable;
private final ArrayList<Integer> colEdit = new ArrayList<>();

/*
 * Constructor
 */
public CreateTableObjective(Object[][] data, String[] header, int numColumnEditable) {
    super();
    this.data = data;
    this.header = header;
    this.columnEditable = numColumnEditable;
}

/*
 * Constructor
 */
public CreateTableObjective(Object[][] data, String[] header, int[] numColumnEditable) {
    super();
    this.data = data;
    this.header = header;
    columnEditable = 1000;
    for(int i = 0;i<numColumnEditable.length;i++)
    {
        colEdit.add(numColumnEditable[i]);
    }
}


/*
 * Dá o numero de linha da tabela
 */
@Override
public int getRowCount() {
    return data.length;
}

/*
 * Numero de coluna da tabela
 */
@Override
public int getColumnCount() {
    return header.length;
}

/*
 * Nome das colunas
 */
@Override
public String getColumnName(int columnIndex) {
    return header[columnIndex];
}

/*
 * Devolve o valor da celula
 */
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
    return data[rowIndex][columnIndex];
}

/**
* 
*/
@Override
public Class<?> getColumnClass(int col){
    switch (col) {
    case 0: 
        return Integer.class;
    case 1: 
        return String.class;
    default:
        return Double.class;
    }
}

/**
* 
* @return boolean
* columnEditable = 1000 isso quer dizer que construi com um array de coluna editável
*/
@Override
public boolean isCellEditable(int row, int col){
    if(this.columnEditable == 1000)
    {
        if(colEdit.contains(col))
        {
            return true;
        }else{
            return false;
        }
    }else{
        if(col == this.columnEditable)
        {
            return true;
        }else{
            return false; 
        }
    }                
}

/*
 * Permite alterar o valor de uma celula
 */
@Override
public void setValueAt(Object value, int row, int col) {
    data[row][col] = value;
    fireTableCellUpdated(row, col);
}

}[/code]

[code]
public class ObjectiveJtable extends DefaultTableCellRenderer{

public Component getTableCellRendererComponent
                 (JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column){
            
    Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    
    if (column == 0) {
        component.setBackground(Color.orange); 
    }
    if (column == 1)
    {
        component.setBackground(Color.white); 
    }
    if(column > 1)
    {
       component.setBackground(Color.black);
    }

// setHorizontalAlignment(CENTER);
// setHorizontalTextPosition(CENTER);
return component;
}
}[/code]

Se comento o método " public Class<?> getColumnClass(int col)" da class “CreateTableObjective” pinta me correcto mas perde object.class que quero manter para não realizar verificação de se é string em vez de double.

Obrigado pela ajuda.