Dúvida sobre Inserir, Consultar, com Classe BD com JFrame

Pessoal, boa noite.
Estou desenvolvimento um trabalho da faculdade, que pedia que eu criasse uma classe Aluno, implementasse uma interface gráfica, com nome, endereço, opções de curso, lista de escolha e etc, e que eu fizesse botão de sair, consultar e Gravar.

Capturar

Porém, a questão pede que eu crie uma classe BDAluno que implemente uma Collection para agrupar um conjunto de objetos Alunos e manipula-los, mas não sei como fazer isso.

Alguem pode me ajudar?

https://www.caelum.com.br/apostila-java-orientacao-objetos/collections-framework/

1 curtida

Se for pra usar uma Collection do java em si talvez você use um Map<String, Aluno> collection = new HashMap<>(); Se for pra montar ou usar uma outra e quiser algo que funciona por fora igual pode ver minha classe no github: StringMap, mas a forma como os dois funcionam são diferentes.

Você também pode usar o famoso ArrayList.

Collection é uma coleção de objetos, existem vários tipos e depende de como você quer trabalhar os objetos que ele coleciona, lista, mapa, fila, pilha…

1 curtida

Então, eu li a página que o “javaflex” mandou e entendi como funciona, mas tipo, se eu utilizar uma ArrayList somente para fazer a consulta ta blz né?

E outra, como posso setar os campos selecionados em uma CheckBox??

Sim, pode ser um ArrayList. Apenas pra você ter uma noção, o ArrayList é um vetor de 10 posições, se você usar 10 posições ele aumenta em mais 10 porém copia o que tinha na antiga para o novo vetor de 20 posições e assim em diante, então se você estiver usando milhares de objetos pode ser meio pesado e talvez compense você criar sua própria List já inicializando o número de posições.

Essa parte do CheckBox não entendi muito bem, se for em um JTable você só precisa definir o tipo de dado da coluna como Boolean.

No ArrayList você pode percorrer as posições dele usando estrutura de repetição, o mais aconselhável é o “for”. no caso você faria parecido com o exemplo abaixo:

jComboBox.removeAllItems();
for(int i=0;i<arraylist.size();i++){
jComboBox.addItem(arraylist.get(i).nome);
}

Amigo, o que o exercício pede é que você crie uma classe que represente a tabela de alunos no banco de dados para fazer simulações com as funções do formulário

public final class BDAluno {

    private final AlunoFrame form;
    private List<Aluno> lista = new ArrayList();

    public BDAluno(AlunoFrame form){
              this.form = form;
              lista.add(new Aluno("Raw", "Rua dois", "CidadeA", "PR", "M", 0, new String[]{"Redes", "Internet"}, "Teste1"));
              lista.add(new Aluno("Raw23", "Rua três", "CidadeB", "PR", "M", 0, new String[]{"Redes", "Internet", "Compiladores"}, "Teste2")); 
    }

   public void inserir(){
             form.getTxtNome.setText("");
             form.getTxtEndereco.setText("");
             form.getTxtCidade.setText("");
             form.getCbEstado.setSelectedIndex(-1);
             //restante do método para resetar os campos do formulário
   }

   public void gravar(){
            Aluno aluno = new Aluno();
           aluno.setNome(form.getTxtNome.getText());
           aluno.setEndereco(form.getTxtEndereco.getText());
           aluno.setCidade(form.getTxtCidade.getText());
           //...setando todos os atributos da classe aluno

          lista.add(aluno);
  }

   public void consultar(String nome){
              Aluno aluno = null;
              lista.stream().forEach(al -> {
                      aluno = Objects.equals(nome, al.getNome()) ? al : null;
              });

             if(aluno != null){
                     form.getTxtNome().setText(aluno.getNome());
                     form.getTxtEndereco.setText(aluno.getEndereco());
                     form.getTxtCidade().setText(aluno.getCidade());
                     //...restante das setagens dos campos do formulário
             } else {
                      JOptionPane.showMessageDialog(form, "Aluno não encontrado", "Registro não encontrado");
             }
   }

   public void sair(){
               form.dispose();
  }

}

Este é um exemplo bem simples e até grosseiro, mas espero que lhe ajude. Para implementar os métodos no formulário basta fazer:

  private final BDAluno bdAluno;

   public AlunoFrame(){
             bdAluno = new BDAluno(this);
   }

   //chamada de listener tem outros jeitos mais fáceis de serem implementados
   private void addActionListener(){
             btInserir.addActionListener(new ActionListener(){
                       actionPerformed(ActionEvent event){
                                bdAluno.inserir();
                       } 
             });

             btGravar.addActionListener(new ActionListener(){
                       actionPerformed(ActionEvent event){
                                bdAluno.gravar();
                       } 
             });

             btConsultar.addActionListener(new ActionListener(){
                       actionPerformed(ActionEvent event){
                                bdAluno.consultar(JOptionPane.showInputDialog(form, "Insira o nome do aluno a ser consultado"));
                       } 
             });

             btSair.addActionListener(new ActionListener(){
                       actionPerformed(ActionEvent event){
                                bdAluno.sair();
                       } 
             });
  }

Faça as melhorias necessárias no código e funcionará perfeitamente.