checkBox não aparece - JTable

Olá galera!
Tenho uma JTable com uma coluna com checkbox, mas o checkboxs não aparecem! Em seu lugar aparece true ou false.
Quando eu clico na celula aparece o checkbox e some novamente, mudando apenas true ou false. Como se ele estivesse atrás da cor de fundo da célula
Já percebi que se eu NÃO usar cellRenderer aparece normalmente.
O que pode ser?
TableModel:

public class BemTransferenciaTableModel extends AbstractTableModel{

    private final int COL_CHECK = 0;
    private final int COL_PATRIMONIO = 1;
    private final int COL_DESCRICAO = 2;
    private final int COL_VALOR = 3;
    private final int COL_OBS = 4;
    private List<BemUnidade> listaBens;

    public BemTransferenciaTableModel() {
        listaBens = new ArrayList<BemUnidade>();
    }

    public BemTransferenciaTableModel(List<BemUnidade> lista) {
        this();
        listaBens.addAll(lista);        
    }

    public int getRowCount() {
        return listaBens.size();
    }

    public int getColumnCount() {
           return 4;
    }

    @Override
    public String getColumnName(int column) {
        if (column == COL_CHECK){
            return "#";
        }
        if (column == COL_PATRIMONIO) {
            return "Patrimônio";
        } else if (column == COL_DESCRICAO) {
            return "Descrição";
        }else if (column == COL_VALOR){
            return "Valor";
        }else if (column == COL_OBS){
            return "Observação";
        }
        return "";
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        if (columnIndex == COL_CHECK){
            return Boolean.class;
        }
        if (columnIndex == COL_PATRIMONIO) {
            return String.class;
        } else if (columnIndex == COL_DESCRICAO) {
            return String.class;
        }else if (columnIndex == COL_VALOR){
            return Double.class;
        }else if (columnIndex == COL_OBS){
            return String.class;
        }
        return super.getColumnClass(columnIndex);
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        BemUnidade bemUnid = listaBens.get(rowIndex);

        if (columnIndex == COL_CHECK){
            return bemUnid.getBem().getSelecionado();
        }
        if (columnIndex == COL_PATRIMONIO) {
            return bemUnid.getBem().getPatrimonio();
        } else if (columnIndex == COL_DESCRICAO) {
            return bemUnid.getBem().getDescricao();
        }else if (columnIndex == COL_VALOR){
            return bemUnid.getBem().getValor();
        }else if (columnIndex == COL_OBS){
            return bemUnid.getObservacao();
        }
        return "";
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return (columnIndex == COL_CHECK);
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        BemUnidade bemUnid = listaBens.get(rowIndex);

        if (columnIndex == COL_CHECK){
            bemUnid.getBem().setSelecionado((Boolean) aValue);
        }else if (columnIndex == COL_PATRIMONIO) {
            bemUnid.getBem().setPatrimonio(aValue.toString());
        } else if (columnIndex == COL_DESCRICAO) {
            bemUnid.getBem().setDescricao(aValue.toString());
        }else if (columnIndex == COL_VALOR){
            bemUnid.getBem().setValor((Double) aValue);
        }else if (columnIndex == COL_OBS){
            bemUnid.setObservacao(aValue.toString());
        }

        fireTableDataChanged();
    }

CellRenderer:

[code]public class BemTransferenciaCellRenderer extends DefaultTableCellRenderer{
public BemTransferenciaCellRenderer() {
super();
}

public Component getTableCellRendererComponent(javax.swing.JTable table,
        Object value, boolean isSelected, boolean hasFocus, int row, int column) {

    JLabel label = (JLabel) super.getTableCellRendererComponent(
            table, value, isSelected, hasFocus, row, column);

    Color corFundoZebrado = new Color(240, 240, 240);
    Color corFundoNormal = new Color(255, 255, 230);

    label.setFont(new java.awt.Font("Tahoma", 0, 12));

    if ((row % 2) == 0) {
        label.setBackground(corFundoNormal);
    } else {
        label.setBackground(corFundoZebrado);
    }   

    if (column == 0) {
        label.setHorizontalAlignment(CENTER);
    } else if (column == 1) {
        label.setHorizontalAlignment(CENTER);
    } else if (column == 2) {
        label.setHorizontalAlignment(LEFT);
    } else if (column == 3) {
        label.setHorizontalAlignment(CENTER);
    }else if (column == 4){
        label.setHorizontalAlignment(LEFT);
    }
    return label;
}

}[/code]

olá

vê se esse post te ajuda a resolver seu problema.

http://www.guj.com.br/java/37535-jcheckbox-em-jtable—clicavel

[quote=seliaj]olá

vê se esse post te ajuda a resolver seu problema.

http://www.guj.com.br/java/37535-jcheckbox-em-jtable—clicavel

[/quote]
Na verdade este não é o meu problema!
A célula que contém o checkbox tá ok. Me parece que ao aplicar o CellRenderer para pintar as linhas é que o checkbox some.
Quando eu não aplico o CellRenderer ao modelo, funciona!
T+

É apenas um palpite, mas tente trabalhar diretamente no cell renderer:

[code] public Component getTableCellRendererComponent(javax.swing.JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int column) {

    super.getTableCellRendererComponent(
            table, value, isSelected, hasFocus, row, column);

    Color corFundoZebrado = new Color(240, 240, 240);
    Color corFundoNormal = new Color(255, 255, 230);

    setFont(new java.awt.Font("Tahoma", 0, 12));

    if ((row % 2) == 0) {
        setBackground(corFundoNormal);
    } else {
        setBackground(corFundoZebrado);
    }   

    if (column == 0) {
        setHorizontalAlignment(CENTER);
    } else if (column == 1) {
        setHorizontalAlignment(CENTER);
    } else if (column == 2) {
        setHorizontalAlignment(LEFT);
    } else if (column == 3) {
        setHorizontalAlignment(CENTER);
    }else if (column == 4){
        setHorizontalAlignment(LEFT);
    }
    return this;
}[/code]

[quote=Eric Yuzo]É apenas um palpite, mas tente trabalhar diretamente no cell renderer:

[code] public Component getTableCellRendererComponent(javax.swing.JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int column) {

    super.getTableCellRendererComponent(
            table, value, isSelected, hasFocus, row, column);

    Color corFundoZebrado = new Color(240, 240, 240);
    Color corFundoNormal = new Color(255, 255, 230);

    setFont(new java.awt.Font("Tahoma", 0, 12));

    if ((row % 2) == 0) {
        setBackground(corFundoNormal);
    } else {
        setBackground(corFundoZebrado);
    }   

    if (column == 0) {
        setHorizontalAlignment(CENTER);
    } else if (column == 1) {
        setHorizontalAlignment(CENTER);
    } else if (column == 2) {
        setHorizontalAlignment(LEFT);
    } else if (column == 3) {
        setHorizontalAlignment(CENTER);
    }else if (column == 4){
        setHorizontalAlignment(LEFT);
    }
    return this;
}[/code][/quote]

Como eu poderia colocá-lo aqui no CellRenderer?

Esta seria a implementação do método getTableCellRendererComponent. Só substituir.

Falaê…

Vou dar vida a este tópido antigo que não foi resolvido ainda (Até então não Finalizado pelo Autor).

Estou com o mesmo problema, e o palpite do Eric Yuzo não funcionou (pelo menos comigo não)

Fazendo alguns testes aqui, vi que o checkBox não aparece quando é setado a propriedade “setHorizontalAlignment(CENTER|LEFT|RIGHT);” na coluna onde deve aparecer o checkBox.
ACHO que, por padrão o checkBox é centralizado na tabela. Por isso que não aceita esta propriedade.

Então para que o checkBox apareça na sua tabela, você não deve setar esta propriedade “setHorizontalAlignment();” na coluna onde deve aparecer o checkBox.
E nas outras colunas pode setar a propriedade que vai funcionar blz.

Bom, essa foi a solução do meu problema…