CheckBox numa Célula JTable

6 respostas
rodrigo73

Como colocar um check box numa celula de uma Jtable?

Eu queria criar uma coluna de check box!! e cada linha teria a sua! para selecionar registros retornados do banco!!
Abraxx

6 Respostas

rodrigo73

O meu construtor estava ficando assim!!

A primeira coluna seria a de checkbox!
mas não consigo adicionar o elemnto!

public GerenciarTurmas(){
		super("JTable");
		Container c = getContentPane();
	    c.setLayout(new FlowLayout());
		
	    final DefaultTableModel modelo = new DefaultTableModel();
	    
	    // constrói a tabela
	    JTable tabela = new JTable(modelo);
	    
	    // Cria as colunas  
	    modelo.addColumn("Incluir");
	    modelo.addColumn("Matricula");
	    modelo.addColumn("Nome");
	    modelo.addColumn("RG");
	    modelo.addColumn("Endereço");
	    modelo.addColumn("Telefone");
	    modelo.addColumn("Data Nascimento");
	    modelo.addColumn("Pai");
	    modelo.addColumn("Mãe");
	    modelo.addColumn("Turma");
	    //instancia classe e chama função
	    DaoAluno daoAluno = new DaoAluno();
	      Vector<Aluno> resultado = daoAluno.buscarTodos(); 
	     //adiciona colunas com vetor de instancias 
	     for (Iterator<Aluno> iterator = resultado.iterator(); iterator.hasNext();) {  
	         Aluno a = iterator.next();
	         String idckb=""+a.getMatricula();
	         Checkbox checkbox = new Checkbox(idckb);

	         modelo.addRow(new Object[]{c.add(checkbox),a.getMatricula(), a.getNome(), a.getRg(),a.getEndereco(), a.getTelefone(),a.getDatanasc(),a.getPai(), a.getMae(),a.getTurma()});
	     }tabela.setPreferredScrollableViewportSize(new Dimension(1000, 300));//dimensao tabela
	     
	     TableCellRenderer tcr = new AlinharCentro();
	 	//alinhando ao centro
	 	tabela.getColumnModel().getColumn(0).setCellRenderer(tcr);
	 	tabela.getColumnModel().getColumn(2).setCellRenderer(tcr);
	 	tabela.getColumnModel().getColumn(4).setCellRenderer(tcr);
	 	tabela.getColumnModel().getColumn(5).setCellRenderer(tcr);
	 	tabela.getColumnModel().getColumn(8).setCellRenderer(tcr);
Nicolas_Fernandes
rodrigo73:
Como colocar um check box numa celula de uma Jtable?

Eu queria criar uma coluna de check box!! e cada linha teria a sua! para selecionar registros retornados do banco!!
Abraxx

Fala, rodrigo!
Antes de mais nada, ABOMINE COM TODAS AS SUAS FORÇAS O USO DO DEFAULTTABLEMODEL. Além de você ser chato trabalhar com linha/coluna, você tem problemas na hora de dar manutenção no código, além do que você não trabalha diretamente com os objetos de domínio.
Recomendo FORTEMENTE que você dê uma lida no meu link da assinatura: como criar seu próprio TableModel.

Quando você criar o seu TableModel, para fazer uma coluna conter um CheckBox, é só setar a classe como Boolean:

public class SeuProprioTableModel extends AbstractTableModel {

    private static final int colunaCheckbox = 0;

    @Override public Class getColumnClass(int columnIndex) {

        if (columnIndex == colunaCheckBox) return Boolean.class; // assim gera uma Checkbox.
        return String.class;
    }
}

Abraços!

rodrigo73

certo! vou dar uma lida no seu tópico!
mas como que funciona esse

return Boolean.class;

não entendi bem!
sou novo em java… desculpe

Nicolas_Fernandes

rodrigo73:
certo! vou dar uma lida no seu tópico!
mas como que funciona esse

return Boolean.class;

não entendi bem!
sou novo em java… desculpe

Quando você criar seu TableModel, haverá um método para ser sobrescrito: getColumnClass. Ele determina qual o tipo de dado que vai ser exibido na coluna determinada. Se você retornar String.class, será exibida, na coluna, um texto corrido. Se você retornar Boolean.class, será exibida uma Checkbox. E assim por diante!

Rafael_Ferraro

Olá Nicolas !
Cara criei este método que você postou na minha classe onde crio minha tabela (GTable).
Mas agora preciso chama-lo no Form que criei ! Mas não sei como faço isso … Peço que me ajude por favor !

Nicolas_Fernandes

Rafael_Ferraro:
Olá Nicolas !
Cara criei este método que você postou na minha classe onde crio minha tabela (GTable).
Mas agora preciso chama-lo no Form que criei ! Mas não sei como faço isso … Peço que me ajude por favor !

Dessenterrou o tópico, hein, Rafael_Ferraro? Hehe!
Veja bem: você deve criar uma instância do seu modelo da tabela e adicioná-lo na sua JTable:MeuModelo modelo = new MeuModelo(); JTable tabela = new JTable(modelo);E voilà!

Fique com Deus! :smiley:

Criado 17 de agosto de 2011
Ultima resposta 8 de nov. de 2012
Respostas 6
Participantes 3