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.
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.
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…
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:
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.