Duvida com JTable

Olá gente, estou usando uma classe que extende AbstractTableModel para preencher um jTable, o problema é que pelo que li até agora seria sufucuente para que valores booleanos fossem exibidos como jCheckBox. Infelizmente não é isso que está ocorrendo. Valores booleanos estão sendo exibidos como String (true ou false).

O código da classe é este abaixo, alguem poderia me ajudar?

public class TableAbstractModel extends AbstractTableModel {

    private String[] columnsTitle;
    private Object[][] data;

    /**
     *
     * @param data Lista de objetos que serão exibidos na tabela
     * @param column Título das colunas da tabela
     */
    public TableAbstractModel (final Object[][] data, final String[] column) {

        this.columnsTitle = column;
        this.data = data;

    }

    /**
     *
     * @return Número de registros da tabela
     */
    public final int getRowCount () {

        return data.length;

    }

    /**
     *
     * @return Número de colunas existentes na tabela
     */
    public final int getColumnCount () {

        return columnsTitle.length;

    }

    /**
     *
     * @param rowIndex Índice da linha da tabela
     * @param columnIndex Índice da coluna da tabela
     * @return Objeto localizado na linha/coluna informados
     */
    public final Object getValueAt (final int rowIndex, final int columnIndex) {

        return data[rowIndex][columnIndex];

    }

    /**
     *
     * @param col Índice da coluna da tabela
     * @return Título da coluna informado
     */
    @Override
    public final String getColumnName (final int col) {

        return columnsTitle[col];

    }
    
}

Apenas para compartilhar, embora não esteja bonito, resolveu meu problema.
A solução que encontrei foi passar um vetor de objetos onde constam as classes das colunas e tive que sobrescrever o método getColumnClass.

A classe ficou desta forma:

[code]
public class TableAbstractModel extends AbstractTableModel {

private String[] columnsTitle;
private Object[][] data;
private Object[] columnsClass;

/**
 *
 * @param data Matriz de objetos que serão exibidos na tabela
 * @param columnTitle Lista de títulos das colunas da tabela
 * @param columnClass Lista de tipos das colunas
 */
public TableAbstractModel(final Object[][] data, final String[] columnsTitle, final Object[] columnsClass) {

    this.columnsTitle = columnsTitle;
    this.data = data;
    this.columnsClass = columnsClass;

}

/**
 *
 * @return Número de registros da tabela
 */
public final int getRowCount() {

    return data.length;

}

/**
 *
 * @return Número de colunas existentes na tabela
 */
public final int getColumnCount() {

    return columnsTitle.length;

}

/**
 *
 * @param rowIndex Índice da linha da tabela
 * @param columnIndex Índice da coluna da tabela
 * @return Objeto localizado na linha/coluna informados
 */
public final Object getValueAt(final int rowIndex, final int columnIndex) {

    return data[rowIndex][columnIndex];

}

/**
 *
 * @param col Índice da coluna da tabela
 * @return Título da coluna informado
 */
@Override
public final String getColumnName(final int col) {

    return columnsTitle[col];

}

@Override
public final Class getColumnClass(final int col) {

    return (Class) columnsClass[col];

}

}[/code]