JTable, Boolean e JCheckBox

Olá pessoal,
já li vários tópicos mas nenhum resolveu o meu problema.

Tenho uma tabela e uma das colunas recebe valores do tipo Boolean.
Meu DefaultTableModel já implementa o método getClass().
Para toda coluna eu seto um DefaultTableCellRenderer, responsável por alternar a cor das linhas.

O problema é que o renderer não trata o Boolean como um checkbox e sim como uma string (true, false).

alguém sabe como resolver isso?
abraços
obrigado

Dê uma olhada e vê se te ajuda.

Qualquer coisa, poste novamente.

[quote=Tchaco]Dê uma olhada e vê se te ajuda.

http://www.guj.com.br/posts/list/56963.java

Qualquer coisa, poste novamente.[/quote]

Tchaco,
a partir do momento que eu atribuo o Renderer às células,
o campo que é Boolean passa de checkbox para (true,false).
entendeu?

Vou postar um pedaço do código que uso para gerar tabela com checkbox

...
private JTable jtbTabela;
private DefaultTableModel jtbTabelaModel;
...

jtbTabelaModel = new DefaultTableModel(new String[][] {}, new String[] { "Campo Boolean", "Campo String" }) {
  @Override
  public Class getColumnClass(int columnIndex) {
    switch (columnIndex) {
      case 0:
	return Boolean.class;
      default:
	return String.class;
    }
  }
};
jtbTabela = new JTable();
jtbTabela.setModel(jtbTabelaModel);
...

e para adicionar itens

jtbTabelaModel.addRow(new Object[] { new Boolean(true), "String Qualquer" });

Compare com o seu código e vê se tem algo diferente.

[code] jTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {

             },
             new String [] {
                 "Ano", "Grupo", "Tipo","Parte"
             }
         ) {
             Class[] types = new Class [] {
                 java.lang.Integer.class, java.lang.String.class, java.lang.String.class, Boolean.class
             };
             boolean[] canEdit = new boolean [] {
                 false, false, false, false
             };


             public Class getColumnClass(int columnIndex) {
                 return types [columnIndex];
             }[/code]

Seu código já começa errado em ter um DefaultTableModel.

Claro ViniGodoy,
detentor do conhecimento,
se não for muito incômodo, poderia me atualizar sobre a razão de ser errado utilizar um DefaultTableModel?
Obrigado!

Só para constar,
resolvi meu problema criando um Renderer que estende um JCheckBox.

[quote=julianofischer]Claro ViniGodoy,
detentor do conhecimento,
se não for muito incômodo, poderia me atualizar sobre a razão de ser errado utilizar um DefaultTableModel?
Obrigado![/quote]

Basta seguir o link da minha assinatura:

  1. É mais difícil que escrever seu próprio TableModel;
  2. É mais lento (usa classes sincronizadas);
  3. Ocupa mais espaço em memória (duplica seus dados);
  4. Deixa o código mais confuso e difícil de manter (exige casts, por exemplo);
  5. Faz a sua mulher te deixar, o leite da sua geladeira azedar, e pessoas apontarem o dedo para você na rua.

E lá você também veria links para esses artigos:
http://www.guj.com.br/posts/list/149034.java#808003
http://www.guj.com.br/posts/list/132698.java#714736

Que te ensinam o jeito certo de fazer. Da próxima vez, antes de partir para a ironia, que tal ler as letras vermelhas e garrafais da assinatura?

Obrigado!