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

6 respostas
jframeswingjava
R

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?

6 Respostas

J

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

D

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…

R

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??

D

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.

H

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

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.

Criado 6 de abril de 2018
Ultima resposta 7 de abr. de 2018
Respostas 6
Participantes 5