Pesquisa em tabela

o codigo abaixo dá erro no for com mensagem java.lang.NullPointerException
protected void mostrarClientes(List aluno){

       if (tmClientes.getRowCount() > 0){
        tmClientes.removeRow(0);
    }
   

   //if (aluno.isEmpty()){
        JOptionPane.showMessageDialog(this, "Nenhum cliente encontrado!");
   // }else{
        String [] campos = new String[] { null, null, null, null,null,null};
        for (int i = 0; i < aluno.size(); i++){
            tmClientes.addRow(campos);
           // tmClientes.setValueAt(aluno.get(i).getCodigo_aluno(), i, 0);
            tmClientes.setValueAt(aluno.get(i).getNome_do_aluno(), i, 0);
            tmClientes.setValueAt(aluno.get(i).getSexo(),i,1);
            tmClientes.setValueAt(aluno.get(i).getEndereco(), i, 2);
            tmClientes.setValueAt(aluno.get(i).getBairro(),i,3);
            tmClientes.setValueAt(aluno.get(i).getCidade(), i, 4);
            tmClientes.setValueAt(aluno.get(i).getUf(),i,5);
            
        }

alguém pode ajudar

Sua dúvida está muito vaga. Explique onde está o erro, qual linha, quando isso acontece. O projeto é seu, se a gente rodasse esse código aí, nem compilaria. Teríamos que tentar adivinhar o que cada coisa faz, vou deixar um ótimo exemplo pra vc dar uma olhada:

1 curtida

Veja seu código:

String [] campos = new String[] { null, null, null, null,null,null};
for (int i = 0; i < aluno.size(); i++) { // tu tem uma lista chamada 'aluno'? Se é uma lista, deveria se chamar 'alunos', no plural
    tmClientes.addRow(campos);
    // pra cada coluna vez você chama 'aluno.get(i)'? Não faz assim, cria uma variável local
    tmClientes.setValueAt(aluno.get(i).getNome_do_aluno(), i, 0); // um aluno tem algum outro nome que não seja o nome dele? Renomeia esse 'getNome_do_aluno' para 'getNome'
    tmClientes.setValueAt(aluno.get(i).getSexo(),i,1);
    tmClientes.setValueAt(aluno.get(i).getEndereco(), i, 2);
    tmClientes.setValueAt(aluno.get(i).getBairro(),i,3);
    tmClientes.setValueAt(aluno.get(i).getCidade(), i, 4);
    tmClientes.setValueAt(aluno.get(i).getUf(),i,5);
}

Primeiramente renomeie sua lista de alunos para ‘alunos’.
Renomeie o método ‘getNome_do_aluno’ para ‘getNome’
Não fique chamando o método get(i) para cada coluna, crie uma variável local contendo o aluno da linha sendo processada.

Com as alterações, seu laço ficará assim:

for (Aluno aluno : alunos) {
    String nome = aluno.getNome();
    String sexo = aluno.getSexo();
    String endereco = aluno.getEndereco();
    String bairro = aluno.getBairro();
    String cidade = aluno.getCidade();
    String uf = aluno.getUf();
    String [] campos = new String[] { nome, sexo, endereco, bairro, cidade, uf };
    tmClientes.addRow(campos);
}

Mas isso ainda não é interessante, pois você está usando DefaultTableModel.
Eu sugiro você estudar como se estende a classe AbstractTableModel e aí criar seu próprio TableModel para renderizar uma lcoleção de objetos do tipo Aluno.

1 curtida

obrigado pelo retorno, vou seguir suas orientações em relação aos atributos da classe
executei e deu o erro:
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException

abaixo segue a classe
public class Alunos {
//Atributos das classes, que serão persistidos no banco de dados
private int codigo_aluno;
private String nome_do_aluno;
private String sexo;
private String endereco;
private String bairro;
private String cidade;
private String uf;

public Alunos(){
this.codigo_aluno=-1;
this.nome_do_aluno="";
this.sexo="";
this.endereco="";
this.bairro="";
this.cidade="";
this.uf="";

}
//o erro ocorre no if
protected void mostrarClientes(List alunos){

       if (tmClientes.getRowCount() > 0){
        tmClientes.removeRow(0);
    }
    if (alunos.size()==0){ // **O erro ocorre nesta linha**
        JOptionPane.showMessageDialog(this, "Nenhum cliente encontrado!");
    }else{
     
        for (Alunos aluno : alunos) {
        String nome = aluno.getNome_do_aluno();
        String sexo = aluno.getSexo();
        String endereco = aluno.getEndereco();
        String bairro = aluno.getBairro();
        String cidade = aluno.getCidade();
        String uf = aluno.getUf();
        String [] campos = new String[] { nome, sexo, endereco, bairro, cidade, uf };
        tmClientes.addRow(campos);

}

Posta o StackTrace completo.
No Stacktrace consta exatamente onde o problema ocorreu.

amigo obrigado eu consegui, refiz todo o código. Obrigado por sua atenção