JTable com checkBox e/ou com boolean

5 respostas
A

Pessoal.

Preciso utilizar uma tabela, onde na primeira coluna de cada linha tem q aparecer um checkbox, a forma q eu encontrei foi adicionar na respectiva coluna um objeto do tipo boolean(ex: column[0] = new boolean(false);).
Blza, na coluna zero da minha tabela aparece como um checkbox desmarcado, e se clicar sobre este, marca… O detalhe é que qdo eu clico sobre este checkbox (que na verdade é um objeto boolean e naum um JCheckbox) o valor resultante dele (getValueAt(int row, int col)) permanesse false.
Como eu poderia fazer para que qdo fosse clicado nele, além de ficar “marcado”, que o value dele tbem mudasse para true? Pois, assim q eu selecionar n linhas, eu preciso percorrer esta tabela e pegar, por exemplo, o valor da segunda coluna das linhas q estão selecionadas, ficou claro?
O código em anexo mostra a solução “provisória” que encontrei para este problema, mas acredito naum ser a ideal!
Se alguém puder me ajudar, ficarei grato…

Um abraço,
Aislan

5 Respostas

Adriano_Almeida

Cara, usa o swingbean http://swingbean.sourceforge.net/. Ele faz isso pra vc facinho.

ViniGodoy

Acho que a maneira mais fácil é implementando seu próprio TableModel. Basta criar um filho de AbstractTableModel e substituir um ou outro método.

Aliás, eu recomendo que você faça isso sempre. Facilita muito o trabalho com Tables.

A

“Pafuncio”, obrigado pela dica… me interessou muito, vou estudar este framework…

“ViniGodoy”, eu estou usando um modelo próprio (que extende a classe AbstractTableModel) cfe vc havia me sugerido. Neste meio-tempo, consegui adiantar bastante coisa, inclusive já está salvando no BD os valores das colunas q estão com os “checkBox” marcados (na verdade, booleans desfarçados, hehehe). O problema está sendo fazer com q fique marcado (true) quando eu trago os valor do bd.
Criei um método pra fazer isto, onde quando houver igualdade do valor trazido com determinada coluna da linha, seta este boolean como true (usei table.setValueAt(new Boolean(true), linha, coluna). Se seu der um getValueAt(row, col) por System.out.println, ele traz como true, certinho… o detalhe é que a coluna com o boolean continua desmarcada.
Tentei colocar, repaint(), validate() logo após, mas não adianta. Cara, dá uma olhada neste anexo, por gentileza…

Mais uma vez obrigado pela força aí…
Aislan

ViniGodoy

Não seria mais correto marcar/desmarcar o Boolean na função loadUsers()?

Não consegui entender direito como funciona essa coluna.

A

Olá!

Foi isto mesmo q eu fiz, enquanto eu fazia meus testes diagnostiquei q sempre q chamava a tabela, os valores eram pegos do modelo. Por mais q eu os modificasse como antes, o modelo ‘matava’ os valores. Então eu trouxe todos os controles para o modelo, e aí funcionou!!!

Muito obrigado pelo apoio…

Aislan

Criado 21 de fevereiro de 2007
Ultima resposta 22 de fev. de 2007
Respostas 5
Participantes 3