GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Problema com Cadastro de alunos - ArrayList

arraylist
netbeans
Tags: #<Tag:0x00007fec0f8dddc8> #<Tag:0x00007fec0f8dc888>

#1

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.


#2

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


#3

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…


#4
// 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);

#5

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)


#6

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


#7

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)


#8

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


#9

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);


#10

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());

#11

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