1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Com colocar uma Check Box em cada linha vinda do banco e apresentada no Jtable?

Boa tarde Pessoal. Tenho uma tabela no banco onde consta 3 colunas, "ID", "NOME", "SOBRENOME", fiz minha própria TABLEMODEL para que apresentasse todos os registros na JTABLE e está funcionando certinho, porém não sei como posso fazer para colocar um CHECK BOX em casa linha apresentada dentro do JTABLE. Alguém poderia me ajudar? Segue abaixo a minha própria TableModel.

import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;


@SuppressWarnings("serial")
public class PessoaTableModel extends AbstractTableModel{

    private final int id = 0;
    private final int nome = 1;
    private final int sobrenome = 2;
    private String[] colunas = new String[] {"ID", "NOME", "SOBRENOME"}; 
    private ArrayList<Pessoa> pessoaLinha;// LISTA DE PESSOAS A SEREM EXIBIDAS NA TABELA

    public PessoaTableModel() {
        pessoaLinha = new ArrayList<Pessoa>();// CRIA UM PessoaTableModel SEM NENHUMA LINHA
    }

    public PessoaTableModel(ArrayList<Pessoa> listaDePessoas) {// CRIA UM PessoaTableModel CONTENDO A LISTA RECEBIDA POR PARAMETRO
        pessoaLinha = new ArrayList<Pessoa>(listaDePessoas);        
    }

    @Override
    public int getColumnCount() {
        return colunas.length;// Array com os nomes das colunas para obter o número de colunas de nossa tabela.
    }

    @Override
    public int getRowCount() {
        return pessoaLinha.size();//O número de linhas da tabela é definido pelo número de elementos da lista de Pessoas.
    }

    @Override
    public String getColumnName(int columnIndex) {
        return colunas[columnIndex];//Array com os nomes das colunas para retornar o nome referente ao índice passado por parâmetro.
    };

    public void addListaDePessoa(ArrayList<Pessoa> pessoas) {
        // Pega o tamanho antigo da tabela, que servirá
        // como índice para o primeiro dos novos registros
        int indice = getRowCount();

        // Adiciona os registros.
        pessoaLinha.addAll(pessoas);

        // Notifica a mudança.
        fireTableRowsInserted(indice, indice + pessoas.size());
    }

    public void limparListaPessoa(){
        pessoaLinha.clear();// REMOVE TODOS OS ELEMENTOS DA LISTA DE PESSOAS
        fireTableDataChanged();//NOTIFICA A MUDANÇA
    }


    //Este método deve verificar o índice recebido por parâmetro e retornar o tipo de classe correspondente à coluna. 
    @Override
    public Class<?> getColumnClass(int columnIndex){
        switch (columnIndex) {
        case id:
            return Integer.class;
        case nome:
            return String.class;
        case sobrenome:
            return String.class;
        default:
            throw new IndexOutOfBoundsException("Column not found");
        }
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {// metodo para bloquear edição da tabela
        return false;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {

        Pessoa pessoa = pessoaLinha.get(rowIndex);//// Pega a PESSOA referente a linha especificada.
        switch (columnIndex) {
        case id:
            return pessoa.getId();
        case nome:
            return pessoa.getNome();
        case sobrenome:
            return pessoa.getSobrenome();
        default:
            throw new IndexOutOfBoundsException("Column not found");
        }
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

        Pessoa pessoa = pessoaLinha.get(rowIndex);// Pega a PESSOA referente a linha especificada.
        switch (columnIndex) {
        case id:
            pessoa.setId(Integer.parseInt((String) aValue));
            break;
        case nome:
            pessoa.setNome((String) aValue);
        case sobrenome:
            pessoa.setSobrenome((String) aValue);
        default:
            throw new IndexOutOfBoundsException("Column not found");
        }
        fireTableCellUpdated(rowIndex, columnIndex); // Notifica a atualização da célula
    }

}
  • Galera consegui fazer aparecer a coluna de CHECK_BOX porem quando clico nela, me aparece um erro falando que a coluna não foi encontrada, alguém poderia me dizer como posso fazer para arrumar isso pois não estou conseguindo.

    Alerson Rigo   03 de jan de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.