Problema com Cadastro de alunos - ArrayList

10 respostas
netbeansarraylist
A

Olá pessoal.
Achei muito interessante o cadastro de alunos do youtuber EduRodrigues, mas os vídeos são de 2015, talvez ele tenha abandonado o canal.

Estou com um problema aqui: 11:20


Projeto que fiz com erros


private void atualizarTabela(String sql){

    AlunoControl control = new AlunoControl();
    
    DefaultTableModel modelo;
    **List<Aluno> lista = new ArrayList<>();**
    lista = control.listarAlunos(sql);
    modelo = (DefaultTableModel) jTb_Alunos.getModel();

O Netbeans diz que nessa parte: “O valor designado nunca é utilizado”

List<Aluno> lista = new ArrayList<>();

Observação: Já fiz essa importação abaixo
import java.util.ArrayList;


Se você ou outra pessoa puder me ajudar, seria muito grato.

10 Respostas

D

tente lista.addAll(control.listarAlunos(sql));

A

Davi, muito obrigado pelo apoio, tentei aqui mas não rolou, não conheço quase nada de java, ainda estou engatinhando, talvez eu tenha colocado no lugar errado…
Veja como ficou:

private void atualizarTabela(String sql){

    AlunoControl control = new AlunoControl();

    DefaultTableModel modelo;
    List<Aluno> lista = new ArrayList<>();
    lista.addAll(control.listarAlunos(sql));
    lista = control.listarAlunos(sql);
    modelo = (DefaultTableModel) jTb_Alunos.getModel();

    while (modelo.getRowCount() > 0) {
        modelo.removeRow(0);
    }

    int i = 0;
    for (Aluno a : lista) {
        modelo.addRow(new String[i]);
        jTb_Alunos.setValueAt(a.getId(), i, 0);
        jTb_Alunos.setValueAt(a.getNome(), i, 1);
        jTb_Alunos.setValueAt(a.getIdade(), i, 2);
        jTb_Alunos.setValueAt(a.getTelefone(), i, 3);
        jTb_Alunos.setValueAt(a.getEmail(), i, 4);
        jTb_Alunos.setValueAt(a.getEndereco(), i, 5);
        jTb_Alunos.setValueAt(a.getUf(), i, 6);
        jTb_Alunos.setValueAt(a.getCidade(), i, 7);
        jTb_Alunos.setValueAt(a.getPai(), i, 8);
        jTb_Alunos.setValueAt(a.getMae(), i, 9);

        i++;

    }

}

=======================================================
Código completo abaixo:

package View;

import Control.CidadeControl;

import Control.EstadoControl;

import Control.AlunoControl;

import Model.Aluno;

import java.awt.List;

import java.awt.Toolkit;

import java.util.ArrayList;

import javax.swing.JOptionPane;

import javax.swing.table.DefaultTableModel;

public class Principal extends javax.swing.JFrame {

int id;
String Aluno;

public Principal() {
   
    initComponents();

    setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("../Image/ico.png")));

    preencherComboUF();

    String uf = (String) jCb_Uf.getSelectedItem();
    preencherComboCidade(uf);

}

private void preencherComboUF(){
    EstadoControl control = new EstadoControl();
    jCb_Uf.setModel(control.listarUF());
    
}

private void preencherComboCidade(String uf){
    CidadeControl control = new CidadeControl();
    jCb_Cidade.setModel(control.listarCidade(uf));
    
}

private void atualizarTabela(String sql){

    AlunoControl control = new AlunoControl();

    DefaultTableModel modelo;
    List<Aluno> lista = new ArrayList<>();
    lista.addAll(control.listarAlunos(sql));
    lista = control.listarAlunos(sql);
    modelo = (DefaultTableModel) jTb_Alunos.getModel();

    while (modelo.getRowCount() > 0) {
        modelo.removeRow(0);
    }

    int i = 0;
    for (Aluno a : lista) {
        modelo.addRow(new String[i]);
        jTb_Alunos.setValueAt(a.getId(), i, 0);
        jTb_Alunos.setValueAt(a.getNome(), i, 1);
        jTb_Alunos.setValueAt(a.getIdade(), i, 2);
        jTb_Alunos.setValueAt(a.getTelefone(), i, 3);
        jTb_Alunos.setValueAt(a.getEmail(), i, 4);
        jTb_Alunos.setValueAt(a.getEndereco(), i, 5);
        jTb_Alunos.setValueAt(a.getUf(), i, 6);
        jTb_Alunos.setValueAt(a.getCidade(), i, 7);
        jTb_Alunos.setValueAt(a.getPai(), i, 8);
        jTb_Alunos.setValueAt(a.getMae(), i, 9);

        i++;

    }

}

    private void limparCampos(){
        
        jTf_Nome.setText("");
        jTf_Idade.setText("");
        jTf_Endereco.setText("");
        jTf_Telefone.setText("");
        jTf_Email.setText("");
        jTf_Pai.setText("");
        jTf_Mae.setText("");
    }
    
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jTabbedPane1 = new javax.swing.JTabbedPane();
    jPanel2 = new javax.swing.JPanel();
    jBt_Pesquisar = new javax.swing.JButton();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTb_Alunos = new javax.swing.JTable();
    jTf_Pesquisa = new javax.swing.JTextField();
    jLabel10 = new javax.swing.JLabel();
    jBt_Excluir = new javax.swing.JButton();
    jBt_Editar = new javax.swing.JButton();
    jPanel1 = new javax.swing.JPanel();
    jLabel1 = new javax.swing.JLabel();
    jTf_Nome = new javax.swing.JTextField();
    jTf_Telefone = new javax.swing.JTextField();
    jLabel2 = new javax.swing.JLabel();
    jLabel3 = new javax.swing.JLabel();
    jTf_Endereco = new javax.swing.JTextField();
    jLabel4 = new javax.swing.JLabel();
    jTf_Pai = new javax.swing.JTextField();
    jTf_Email = new javax.swing.JTextField();
    jLabel5 = new javax.swing.JLabel();
    jLabel6 = new javax.swing.JLabel();
    jTf_Idade = new javax.swing.JTextField();
    jLabel7 = new javax.swing.JLabel();
    jTf_Mae = new javax.swing.JTextField();
    jLabel8 = new javax.swing.JLabel();
    jCb_Uf = new javax.swing.JComboBox<>();
    jCb_Cidade = new javax.swing.JComboBox<>();
    jLabel9 = new javax.swing.JLabel();
    jBt_Cancelar = new javax.swing.JButton();
    jBt_Cadastrar = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("Controle de Alunos");
    setBackground(new java.awt.Color(255, 255, 255));
    setPreferredSize(new java.awt.Dimension(700, 500));
    setResizable(false);

    jTabbedPane1.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
            jTabbedPane1MouseClicked(evt);
        }
    });

    jPanel2.setBackground(new java.awt.Color(255, 255, 255));

    jBt_Pesquisar.setText("Pesquisar");
    jBt_Pesquisar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jBt_PesquisarActionPerformed(evt);
        }
    });

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

        },
        new String [] {
            "ID", "Nome", "Idade", "Telefone", "Email"
        }
    ) {
        boolean[] canEdit = new boolean [] {
            false, false, false, false, false
        };

        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return canEdit [columnIndex];
        }
    });
    jTb_Alunos.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
            jTb_AlunosMouseClicked(evt);
        }
    });
    jScrollPane1.setViewportView(jTb_Alunos);
    if (jTb_Alunos.getColumnModel().getColumnCount() > 0) {
        jTb_Alunos.getColumnModel().getColumn(0).setPreferredWidth(30);
        jTb_Alunos.getColumnModel().getColumn(0).setMaxWidth(30);
        jTb_Alunos.getColumnModel().getColumn(2).setPreferredWidth(50);
        jTb_Alunos.getColumnModel().getColumn(2).setMaxWidth(50);
        jTb_Alunos.getColumnModel().getColumn(3).setPreferredWidth(100);
        jTb_Alunos.getColumnModel().getColumn(3).setMaxWidth(100);
    }

    jLabel10.setText("Nome");

    jBt_Excluir.setText("Excluir");
    jBt_Excluir.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jBt_ExcluirActionPerformed(evt);
        }
    });

    jBt_Editar.setText("Editar");
    jBt_Editar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jBt_EditarActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
    jPanel2.setLayout(jPanel2Layout);
    jPanel2Layout.setHorizontalGroup(
        jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel2Layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPane1)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                    .addGap(0, 0, Short.MAX_VALUE)
                    .addComponent(jBt_Editar, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jBt_Excluir, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(jPanel2Layout.createSequentialGroup()
                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jLabel10)
                        .addGroup(jPanel2Layout.createSequentialGroup()
                            .addComponent(jTf_Pesquisa, javax.swing.GroupLayout.PREFERRED_SIZE, 494, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jBt_Pesquisar, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGap(0, 0, Short.MAX_VALUE)))
            .addContainerGap())
    );
    jPanel2Layout.setVerticalGroup(
        jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel2Layout.createSequentialGroup()
            .addGap(20, 20, 20)
            .addComponent(jLabel10)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jTf_Pesquisa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jBt_Pesquisar))
            .addGap(23, 23, 23)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 240, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(18, 18, 18)
            .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jBt_Excluir)
                .addComponent(jBt_Editar))
            .addGap(20, 20, 20))
    );

    jTabbedPane1.addTab("Pesquisa de Alunos", jPanel2);

    jPanel1.setBackground(new java.awt.Color(255, 255, 255));

    jLabel1.setText("Nome");

    jLabel2.setText("Telefone");

    jLabel3.setText("Endereço");

    jLabel4.setText("Nome do pai");

    jLabel5.setText("E-mail");

    jLabel6.setText("Idade");

    jLabel7.setText("Nome da Mãe");

    jLabel8.setText("UF");

    jCb_Uf.addItemListener(new java.awt.event.ItemListener() {
        public void itemStateChanged(java.awt.event.ItemEvent evt) {
            jCb_UfItemStateChanged(evt);
        }
    });
    jCb_Uf.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jCb_UfActionPerformed(evt);
        }
    });

    jCb_Cidade.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jCb_CidadeActionPerformed(evt);
        }
    });

    jLabel9.setText("Cidade");

    jBt_Cancelar.setText("Cancelar");
    jBt_Cancelar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jBt_CancelarActionPerformed(evt);
        }
    });

    jBt_Cadastrar.setText("Cadastrar");
    jBt_Cadastrar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jBt_CadastrarActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addGap(21, 21, 21)
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jTf_Nome, javax.swing.GroupLayout.PREFERRED_SIZE, 412, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 182, Short.MAX_VALUE)
                        .addComponent(jTf_Telefone, javax.swing.GroupLayout.Alignment.LEADING))
                    .addGap(18, 18, 18)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jTf_Email, javax.swing.GroupLayout.PREFERRED_SIZE, 368, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jLabel3)
                        .addComponent(jTf_Endereco, javax.swing.GroupLayout.PREFERRED_SIZE, 377, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(18, 18, 18)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(jCb_Uf, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jCb_Cidade, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 433, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 236, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jTf_Pai, javax.swing.GroupLayout.PREFERRED_SIZE, 263, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(14, 14, 14)
                    .addComponent(jLabel7))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(424, 424, 424)
                    .addComponent(jTf_Idade, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addGroup(jPanel1Layout.createSequentialGroup()
                            .addComponent(jBt_Cancelar)
                            .addGap(51, 51, 51)
                            .addComponent(jBt_Cadastrar))
                        .addComponent(jTf_Mae, javax.swing.GroupLayout.PREFERRED_SIZE, 299, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(16, 16, 16)))
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addGap(30, 30, 30)
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel1)
                .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jTf_Nome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jTf_Idade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addComponent(jLabel2)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jTf_Telefone, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addComponent(jLabel5)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jTf_Email, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
            .addGap(18, 18, 18)
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addComponent(jLabel3)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jTf_Endereco, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jCb_Uf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel9)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jCb_Cidade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel8)
                        .addGap(29, 29, 29))))
            .addGap(43, 43, 43)
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addComponent(jLabel4)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jTf_Pai, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                    .addComponent(jLabel7)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jTf_Mae, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jBt_Cancelar)
                .addComponent(jBt_Cadastrar))
            .addContainerGap(95, Short.MAX_VALUE))
    );

    jTabbedPane1.addTab("Cadastro de Alunos", jPanel1);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 614, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(0, 26, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jTabbedPane1)
    );

    jTabbedPane1.getAccessibleContext().setAccessibleName("Pesquisa de Alunos");

    pack();
}// </editor-fold>                        

private void jCb_CidadeActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // TODO add your handling code here:
}                                          

private void jCb_UfItemStateChanged(java.awt.event.ItemEvent evt) {                                        

    String uf = (String) jCb_Uf.getSelectedItem();
    preencherComboCidade(uf);
    
}                                       

private void jBt_CadastrarActionPerformed(java.awt.event.ActionEvent evt) {                                              
        
    AlunoControl control = new AlunoControl();
    Aluno a = new Aluno();

    int idade = 0;
    if(!jTf_Idade.getText().equals("")){
        idade = Integer.parseInt(jTf_Idade.getText());
    }
    
    a.setNome(jTf_Nome.getText());
    a.setIdade(idade);
    a.setTelefone(jTf_Telefone.getText());
    a.setEmail(jTf_Email.getText());
    a.setEndereco(jTf_Endereco.getText());
    a.setUf((String) jCb_Uf.getSelectedItem());
    a.setCidade((String) jCb_Cidade.getSelectedItem());
    a.setPai(jTf_Pai.getText());
    a.setMae(jTf_Mae.getText());
    
    if(control.cadastro(a)){
       limparCampos(); 
    }
    
    
}                                             

private void jTabbedPane1MouseClicked(java.awt.event.MouseEvent evt) {                                          
    String sql = "SELECT * FROM alunos";
    atualizarTabela(sql);
    
}                                         

private void jBt_PesquisarActionPerformed(java.awt.event.ActionEvent evt) {                                              
     String sql = "SELECT * FROM alunos WHERE Nome LIKE '%" + jTf_Pesquisa.getText() + "%'";
     atualizarTabela(sql);
    
    
    
}                                             

private void jBt_CancelarActionPerformed(java.awt.event.ActionEvent evt) {                                             

    Principal p = new Principal();
    this.setVisible(false);
    p.setVisible(true);
    p.setLocationRelativeTo(null);
    limparCampos();
}                                            

private void jBt_ExcluirActionPerformed(java.awt.event.ActionEvent evt) {                                            

    AlunoControl control = new AlunoControl();
    if (jTb_Alunos.getSelectedRow() == 0) {
        JOptionPane.showMessageDialog(null, "Nenhum aluno foi selecionado", "Necessário selecionar o aluno", JOptionPane.WARNING_MESSAGE);
    } else {

        if (control.excluir(id)) {
            String sql = "SELECT * FROM alunos";
            atualizarTabela(sql);
        }
    }

}                                           

private void jTb_AlunosMouseClicked(java.awt.event.MouseEvent evt) {                                        

    int linha = jTb_Alunos.getSelectedRow();
    String colunaId = jTb_Alunos.getValueAt(linha, 0).toString();

    id = Integer.parseInt(colunaId);
    System.out.println(id);
}                                       

private void jBt_EditarActionPerformed(java.awt.event.ActionEvent evt) {                                           

    AlunoControl control = new AlunoControl();
    if (jTb_Alunos.getSelectedRow() == 0) {
        JOptionPane.showMessageDialog(null, "Nenhum aluno foi selecionado", "Necessário selecionar o aluno", JOptionPane.WARNING_MESSAGE);
    } else {
        Editar e = new Editar();
        e.setVisible(true);
        e.setLocationRelativeTo(null);
        this.setVisible(false);
        e.preencherFormulario(id);
        
    }
    
}                                          

private void jCb_UfActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
}                                      

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    
            
            
    
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Principal().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JButton jBt_Cadastrar;
private javax.swing.JButton jBt_Cancelar;
private javax.swing.JButton jBt_Editar;
private javax.swing.JButton jBt_Excluir;
private javax.swing.JButton jBt_Pesquisar;
private javax.swing.JComboBox<String> jCb_Cidade;
private javax.swing.JComboBox<String> jCb_Uf;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JTable jTb_Alunos;
private javax.swing.JTextField jTf_Email;
private javax.swing.JTextField jTf_Endereco;
private javax.swing.JTextField jTf_Idade;
private javax.swing.JTextField jTf_Mae;
private javax.swing.JTextField jTf_Nome;
private javax.swing.JTextField jTf_Pai;
private javax.swing.JTextField jTf_Pesquisa;
private javax.swing.JTextField jTf_Telefone;
// End of variables declaration

}


Mais uma vez obrigado pelo apoio…

D
// List<Aluno> lista = new ArrayList<>();
List<Aluno> lista;
lista = control.listarAlunos(sql);

O new significa que está instanciando um objeto, na linha seguinte este objeto instanciado é perdido e nunca é utilizado. Não é erro, é só um aviso de que isso pode não estar certo.

A sugestão de @DaviResio também está certa, mas vc precisaria remover outra linha:

List<Aluno> lista = new ArrayList<>();
lista.addAll(control.listarAlunos(sql));
// lista = control.listarAlunos(sql);
A

Ah, muito obrigado Diego, fiz do jeito que você citou.
O grande problema é que neste ponto do tutorial era para atualizar a tabela de alunos cadastrados.
Consigo fazer o cadastro, consigo ver que entrou no banco de dados, mas não consigo nem pesquisar nem puxar a lista dos cadastrados na tabela…


Botão pesquisar

private void jBt_PesquisarActionPerformed(java.awt.event.ActionEvent evt) {                                              
     String sql = "SELECT * FROM alunos WHERE Nome LIKE '%" + jTf_Pesquisa.getText() + "%'";
     atualizarTabela(sql);


Atualizar Tabela

private void atualizarTabela(String sql){

AlunoControl control = new AlunoControl();

    DefaultTableModel modelo;
    List<Aluno> lista = new ArrayList<>();
    lista.addAll(control.listarAlunos(sql));
    //lista = control.listarAlunos(sql);
    modelo = (DefaultTableModel) jTb_Alunos.getModel();

    while (modelo.getRowCount() > 0) {
        modelo.removeRow(0);
    }

    int i = 0;
    for (Aluno a : lista) {
        modelo.addRow(new String[i]);
        jTb_Alunos.setValueAt(a.getId(), i, 0);
        jTb_Alunos.setValueAt(a.getNome(), i, 1);
        jTb_Alunos.setValueAt(a.getIdade(), i, 2);
        jTb_Alunos.setValueAt(a.getTelefone(), i, 3);
        jTb_Alunos.setValueAt(a.getEmail(), i, 4);
        jTb_Alunos.setValueAt(a.getEndereco(), i, 5);
        jTb_Alunos.setValueAt(a.getUf(), i, 6);
        jTb_Alunos.setValueAt(a.getCidade(), i, 7);
        jTb_Alunos.setValueAt(a.getPai(), i, 8);
        jTb_Alunos.setValueAt(a.getMae(), i, 9);

        i++;

    }

}

Não consigo descobrir o que está errado, os dados estão no banco, mas não aparecem na tabela do java…


Erro

Exception in thread AWT-EventQueue-0 java.lang.RuntimeException: Uncompilable source code - type java.awt.List does not take parameters

at View.Principal.atualizarTabela(Principal.java:49)

at View.Principal.jTabbedPane1MouseClicked(Principal.java:450)

at View.Principal.access$000(Principal.java:14)

at View.Principal$1.mouseClicked(Principal.java:132)

at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)

at java.awt.Component.processMouseEvent(Component.java:6536)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

at java.awt.Component.processEvent(Component.java:6298)

at java.awt.Container.processEvent(Container.java:2238)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2296)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4897)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4543)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4475)

at java.awt.Container.dispatchEventImpl(Container.java:2282)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)

at java.awt.EventQueue$4.run(EventQueue.java:733)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

CONSTRUÍDO COM SUCESSO (tempo total: 22 segundos)
D

Erro de import, acho que é java.util.List e não java.awt.List

A

Ainda não…
Mas muito obrigado por estarem tentando me ajudar…

Seguem as importações atuais:

import Control.CidadeControl;

import Control.EstadoControl;

import Control.AlunoControl;

import Model.Aluno;

import java.awt.Toolkit;

import java.util.ArrayList;

import javax.swing.JOptionPane;

import javax.swing.table.DefaultTableModel;

Editado:
Pessoal, muito estranho isso, reiniciei o netbeans após a alteração acima e o “erro” sumiu misteriosamente.
Agradeço à todos de coração.

Mas agora surgiu outro problema critico, no atualizarTabela foi criado este item:


private void jTabbedPane1MouseClicked(java.awt.event.MouseEvent evt) {

String sql = SELECT * FROM alunos;

atualizarTabela(sql);
}

A ideia é de que enquanto cadastro um novo aluno, o mesmo é inserido no banco normalmente.
Após o cadastro, clico na aba pesquisa de alunos, então a tabela deveria ser atualizada com todos os alunos do banco.
Mas só é adicionado 1 aluno na tabela…

Este item abaixo não deveria adicionar todos os alunos cadastrados?


private void atualizarTabela(String sql){

    AlunoControl control = new AlunoControl();

    DefaultTableModel modelo;
    List<Aluno> lista = new ArrayList<>();
    lista.addAll(control.listarAlunos(sql));
    modelo = (DefaultTableModel) jTb_Alunos.getModel();

    while (modelo.getRowCount() > 0) {
        modelo.removeRow(0);
    }

    int i = 0;
    for (Aluno a : lista) {
        modelo.addRow(new String[i]);
        jTb_Alunos.setValueAt(a.getId(), i, 0);
        jTb_Alunos.setValueAt(a.getNome(), i, 1);
        jTb_Alunos.setValueAt(a.getIdade(), i, 2);
        jTb_Alunos.setValueAt(a.getTelefone(), i, 3);
        jTb_Alunos.setValueAt(a.getEmail(), i, 4);
        jTb_Alunos.setValueAt(a.getEndereco(), i, 5);
        jTb_Alunos.setValueAt(a.getUf(), i, 6);
        jTb_Alunos.setValueAt(a.getCidade(), i, 7);
        jTb_Alunos.setValueAt(a.getPai(), i, 8);
        jTb_Alunos.setValueAt(a.getMae(), i, 9);

        i++;

    }

}

erro

Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException: 5 >= 5

at java.util.Vector.elementAt(Vector.java:477)

at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:294)

at sun.swing.SwingUtilities2.convertColumnIndexToModel(SwingUtilities2.java:1988)

at javax.swing.JTable.convertColumnIndexToModel(JTable.java:2582)

at javax.swing.JTable.setValueAt(JTable.java:2742)

at View.Principal.atualizarTabela(Principal.java:66)

at View.Principal.jTabbedPane1MouseClicked(Principal.java:450)

at View.Principal.access$000(Principal.java:14)

at View.Principal$1.mouseClicked(Principal.java:132)

at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)

at java.awt.Component.processMouseEvent(Component.java:6536)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

at java.awt.Component.processEvent(Component.java:6298)

at java.awt.Container.processEvent(Container.java:2238)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2296)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4897)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4543)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4475)

at java.awt.Container.dispatchEventImpl(Container.java:2282)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)

at java.awt.EventQueue$4.run(EventQueue.java:733)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

CONSTRUÍDO COM SUCESSO (tempo total: 19 segundos)
D

Provavelmente o problema está nas colunas definidas na tabela:

Acredito que vc definiu as colunas igual ao vídeo que tem apenas 5 colunas, mas vc está tentando colocar 10

A

Perfeito meu amigo!!!
No código ele não colocou todos os itens, acabei colocando todos…rs
Notei que ele começou com 0 e não com 1, então fui até 9, mas me esqueci da tabela.

jTb_Alunos.setValueAt(a.getId(), i, 0);
        jTb_Alunos.setValueAt(a.getNome(), i, 1);
        jTb_Alunos.setValueAt(a.getIdade(), i, 2);
        jTb_Alunos.setValueAt(a.getTelefone(), i, 3);
        jTb_Alunos.setValueAt(a.getEmail(), i, 4);
        jTb_Alunos.setValueAt(a.getEndereco(), i, 5);
        jTb_Alunos.setValueAt(a.getUf(), i, 6);
        jTb_Alunos.setValueAt(a.getCidade(), i, 7);
        jTb_Alunos.setValueAt(a.getPai(), i, 8);
        jTb_Alunos.setValueAt(a.getMae(), i, 9);

Agora tenho um pequeno erro para excluir linhas selecionadas, mas isso consigo resolver com certa dificuldade, mas consigo…rs
Uma grande dificuldade mesmo seria o botão pesquisar, tenho uma ideia para um aplicativo e queria usar este como base, tem tudo o que preciso, mas falta um item.

Gostaria que ao digitar o nome ou qualquer outro campo da tabela e clicar no botão pesquisar fosse efetuada a pesquisa.
Para isso será necessário copiar todo o código para cada item ou há outra forma mais prática?

private void jBt_PesquisarActionPerformed(java.awt.event.ActionEvent evt) {                                              
     String sql = "SELECT * FROM alunos WHERE Nome LIKE '%" + jTf_Pesquisa.getText() + "%'";
     atualizarTabela(sql);

D

Acho que seria mais fácil alterar o sql. Use o OR como no link:

Se vc quiser uma forma mais prática:

Não faz sentido passar o sql como parâmetro no método listarAlunos na classe AlunoDAO/AlunoControl, assim é melhor:

public List<Aluno> buscarAlunos(String pesquisa) {
  String sql = ...; // montar o sql
  List<Aluno> alunos = new ArrayList<>();
  Connection conn = null;
  PreparedStatement stmt = null;
  ResultSet rs = null;
  try {
    conn = ConexaoDAO.abrirConexao();
    stmt = conn.prepareStatement(sql);
    rs = stmt.executeQuery();
    // preenche a lista
  } catch(Exception e) {
    alunos = null;
  } finally {
    try { if (rs != null) rs.close(); } catch (Exception e) {};
    try { if (stmt != null) stmt.close(); } catch (Exception e) {};
    try { if (conn != null) conn.close(); } catch (Exception e) {};
  }
  return alunos;
}

É importante fechar a conexão com o banco depois que abre, para evitar erros

e no botão:

private void jBt_PesquisarActionPerformed(java.awt.event.ActionEvent evt) {
     atualizarTabela(jTf_Pesquisa.getText());

ou melhor ainda para evitar poluição no código:

public String getPesquisa() {
    return jTf_Pesquisa.getText().trim();
}

private void jBt_PesquisarActionPerformed(java.awt.event.ActionEvent evt) {
     atualizarTabela(getPesquisa());
A

Olá Diego, muito obrigado pela ajuda, infelizmente ficou complicado demais pra mim, ainda estou engatinhando, mas agradeço de coração por seu apoio…

Criado 26 de maio de 2018
Ultima resposta 29 de mai. de 2018
Respostas 10
Participantes 3