segunda-feira, 8 de maio de 2017

Java Desktop, Cadastro CRUD: Final


Na parte 5 o sistema ficou parcialmente pronto, com a janela desenhada, porém sem funcionamento. 

Nesta parte final veremos passo a passo os métodos que farão a rotina de inserir, atualizar, pesquisar e deletar dados. Usando a Orientação a Objetos, veremos o método montaCliente, que monta no objeto Cliente os dados preenchidos no formulário, para inserir, atualizar e deletar; limpaTela para apagar os campos, quando necessário para inserir novos dados; setCliente, responsável por preencher os campos do formulário com os dados do cliente selecionado na lista de pesquisa; carregaLista, que "alimenta" o combobox com os registros cadastrados no banco e os métodos da interface de eventos ActionListener, onde os botões são programados para executar cada um sua ação no sistema. Para que o CRUD funcione é preciso criar uma outra classe, como dito anteriormente na parte 2, a classe ClienteCT.

CLASSE CLIENTECT

Crie a Classe ClienteCT no pacote controle, com o código abaixo. Esta classe "chama" os métodos da classe ClienteDao e atribuem a um objeto da classe Cliente.
1 package br.com.cliente.controle;
2 
3 import java.util.List;
4 import br.com.fabrica.bean.Cliente;
5 import br.com.fabrica.dao.ClienteDao;
6 
7 public class ClienteCT {
8   public void insert(Cliente c){
9   ClienteDao dao = new ClienteDao();
10  dao.insert(c);
11  }
12 
13  public void update(Cliente c){
14  ClienteDao dao = new ClienteDao();
15  dao.update(c);
16  }
17 
18  public void delete(Cliente c){
19  ClienteDao dao = new ClienteDao();
20  dao.delete(c);
21  }
22 
23  public Cliente select(int i){
24  ClienteDao dao = new ClienteDao();
25  Cliente c = (Cliente) dao.select();
26  return c;
27  }
28 
29  public List select(){
30  ClienteDao dao = new ClienteDao();
31  List c = dao.select();
32  return c;
33  }
34 }

MÉTODOS DA ROTINA CRUD NO FORMULÁRIO

Em seguida, volte à classe FormCliente. Abaixo dos atributos privados, crie o método montaCliente (observe os comentários no código abaixo para entender a função do método):
1  public Cliente montaCliente(){ 
2    //Pega dos dados digitados nos campos do formulário e atribui ao objeto da classe Cliente;
3    Cliente c = new Cliente();
4     c.setNome(this.txtNome.getText());
5     c.setEndereco(this.txtEndereco.getText());
6     c.setMunicipio(this.txtMunicipio.getText());
7     c.setCep(this.txtCep.getText());
8     c.setTel(this.txtTel.getText());
9     c.setCel(this.txtCel.getText());
10    c.setCpf(this.txtCpf.getText());
11    c.setCnpj(this.txtCnpj.getText());
12    c.setGenero(genero);
13    
14    if(this.txtID.getText() != null && !this.txtID.getText().equals("")){
15     c.setId(Integer.parseInt(this.txtID.getText()));
16     //Condicional para garantir que o campo ID não seja nulo;
17    }
18    return c;
19    } 
Logo abaixo, ponha o código abaixo, limpaTela, método que apaga os campos do formulário:
1 public void limpaTela(){
2    //Limpa os campos do formulário;
3    this.txtNome.setText("");
4    this.txtEndereco.setText("");
5    this.txtMunicipio.setText("");
6    this.txtCep.setText("");
7    this.txtTel.setText("");
8    this.txtCel.setText("");
9    this.txtCpf.setText("");
10   this.txtCnpj.setText("");
11   this.txtID.setText(null);
12   this.rdbtnF.setSelected(false);
13   this.rdbtnM.setSelected(false);
14  }
Para fazer a seleção de um cliente, preenchendo os dados no formulário, o método setCliente:
1  public void setCliente(Cliente c){ 
2     //Preenche formulário de Cliente selecionado no combobox, ao clicar no botão pesquisar;
3     this.txtNome.setText(c.getNome());
4     this.txtEndereco.setText(c.getEndereco());
5     this.txtMunicipio.setText(c.getMunicipio());
6     this.txtCep.setText(c.getCep());
7     this.txtTel.setText(c.getTel());
8     this.txtCel.setText(c.getCel());
9     this.txtCpf.setText(c.getCpf());
10    this.txtCnpj.setText(c.getCnpj());
11    if(c.getGenero().equals("F")){
12     this.rdbtnF.setSelected(true);
13     genero = "F";
14    }else if(c.getGenero().equals("M")){
15     this.rdbtnM.setSelected(true);
16     genero = "M";
17    }
18    //Condicional para seleção do radiobutton do registro selecionado;
19    if(c.getId() != null && c.getId() > 0){
20     this.txtID.setText(c.getId().toString());
21    } //Condicional para garantir que o campo ID não seja nulo;
22   }
Carregar lista no combobox com o método carregaLista:
1 public void carregaLista(){ 
2    //Preenche Combobox com registros do banco de dados
3    ClienteCT mbc = new ClienteCT();
4    
5    List ClienteBd = mbc.select();
6    cbPesquisar.removeAllItems();
7    for (Cliente Medico : ClienteBd) {
8    cbPesquisar.addItem(Medico);
9   }
10  }

ActionListener - colocando os botões para funcionar

Seguindo o mesmo passo dado na Parte 4, implementando a interface Dao, implemente a interface de eventos ActionListener, para programar os eventos dos botões do formulário.


Eclipse - implements ActionListener

Botão Salvar - confira o código abaixo com os comentários:
1  @Override
2   public void actionPerformed(ActionEvent e) {
3    if(e.getActionCommand().equals(this.btnSalvar.getActionCommand())){
4     //Condicional - se clicar no botão Salvar (disquete)...
5     Cliente c = this.montaCliente();
6     //Chama o método montaCliente para pegar os dados e gravar no objeto Cliente c;
7     ClienteCT cbc = new ClienteCT();
8     //Instancia a classe de controle ClienteCT;
9     cbc.insert(c);
10    //Chama o método insert da classe ClienteCT para inserir os dados do objeto Cliente (c) de montaCliente no banco;
11    this.limpaTela();
12    //Limpa os campos após inserir/salvar dados no banco;
13    this.carregaLista();
14    //Carrega a lista do combobox, atualizando após inserção;
15    JOptionPane.showMessageDialog(null, "Cliente "+txtNome.getText()+" cadastrado...");
16    //Abre diálogo de mensagem, informando que o cliente foi cadastrado;
17   }

Java Desktop

Botão Pesquisar:
1 }else if(e.getActionCommand().equals(this.btnPesquisar.getActionCommand())){
2    //Condicional adicional - se clicar no botão Selecionar (lupa)...
3    if(cbPesquisar.getSelectedItem() != null && !cbPesquisar.getSelectedItem().equals("")){
4     //Condicional - se o campo de pesquisa NÃO estiver em branco ao clicar em Selecionar...
5     Cliente c = (Cliente) cbPesquisar.getSelectedItem();
6     //Cast - pega o item selecionado no combobox e transforma num objeto Cliente;
7     this.setCliente(c);
8     //Chama o método setCliente para preencher os campos do formulário a partir do objeto Cliente da seleção do combobox;
9    }else{
10    JOptionPane.showMessageDialog(null, "Escolha um cliente na lista para pesquisar.");
11    //Caso o campo combobox esteja em branco ao clicar em Selecionar, abre diálogo orientando escolher primeiro um cliente da lista;
12   }
13 }
Java Desktop

Botão Excluir:
1 }else if(e.getActionCommand().equals(this.btnExcluir.getActionCommand())){
2     //Caso o botão acionado seja Excluir (ícone "X");
3     String[] options = {"Sim", "Não"};
4     //Cria variável tipo vetor para definir botão de seleção ativado por padrão;
5     int conf = JOptionPane.showOptionDialog(null, null, "CONFIRMA EXCLUSÃO?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]);
6     //Cria variável tipo int com configuração de janela de diálogo de confirmação de exclusão;
7     if(conf == JOptionPane.YES_OPTION){
8      //Condicional: se a opção for SIM na confirmação...
9      Cliente c = this.montaCliente();
10     //Chama o método montaCliente para pegar os dados e gravar no objeto Cliente c;
11     ClienteCT cbc = new ClienteCT();
12     //Instancia a classe de controle ClienteCT;
13     cbc.delete(c);
14     //Chama o método delete da classe ClienteCT para excluir dados do objeto Cliente (c) de montaCliente no banco;
15     this.limpaTela();
16     //Limpa os campos após excluir dados do banco;
17     this.carregaLista();
18     //Carrega a lista do combobox, atualizando após inserção;
19    }
Java Desktop

Botão Editar:
1 }else if(e.getActionCommand().equals(this.btnEditar.getActionCommand())){
2     //Caso o botão acionado seja Editar (ícone Lápis);
3     String[] options = {"Sim", "Não"};
4     //Cria variável tipo vetor para definir botão de seleção ativado por padrão;
5       int conf = JOptionPane.showOptionDialog(null, null, "CONFIRMA EDIÇÃO?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]);
6     //Cria variável tipo int com configuração de janela de diálogo de confirmação de edição;
7       if(conf == JOptionPane.YES_OPTION){
8      //Condicional: se a opção for SIM na confirmação...
9      Cliente c = this.montaCliente();
10     //Chama o método montaCliente para pegar os dados e gravar no objeto Cliente c;
11     ClienteCT cbc = new ClienteCT();
12     //Instancia a classe de controle ClienteCT;
13     cbc.update(c);
14     //Chama o método update da classe ClienteCT para atualizar dados do objeto Cliente (c) de montaCliente no banco;
15     this.limpaTela();
16     //Limpa os campos após atualizar os dados do banco;
17     this.carregaLista();
18     //Carrega a lista do combobox, atualizando após edição;
19    }
20   }

Implementação do ActionListener completa:

1 @Override
2  public void actionPerformed(ActionEvent e) {
3   if(e.getActionCommand().equals(this.btnSalvar.getActionCommand())){
4    //Condicional - se clicar no botão Salvar (disquete)...
5    Cliente c = this.montaCliente();
6    //Chama o método montaCliente para pegar os dados e gravar no objeto;
7    ClienteCT cbc = new ClienteCT();
8    //Instancia a classe de controle ClienteCT;
9    cbc.insert(c);
10   //Chama o método insert da classe ClienteCT para inserir dados no banco;
11   this.limpaTela();
12   //Limpa os campos após inserir/salvar dados no banco;
13   this.carregaLista();
14   //Carrega a lista do combobox, atualizando após inserção;
15   JOptionPane.showMessageDialog(null, "Cliente "+txtNome.getText()+" cadastrado...");
16   //Abre diálogo de mensagem, informando que o cliente foi cadastrado;
17  }else if(e.getActionCommand().equals(this.btnPesquisar.getActionCommand())){
18   //Condicional adicional - se clicar no botão Selecionar (lupa)...
19   if(cbPesquisar.getSelectedItem() != null && !cbPesquisar.getSelectedItem().equals("")){
20    //Condicional - se o campo de pesquisa NÃO estiver em branco ao clicar em Selecionar...
21    Cliente c = (Cliente) cbPesquisar.getSelectedItem();
22    //Cast - pega o item selecionado no combobox e transforma num objeto Cliente;
23    this.setCliente(c);
24    //Chama o método setCliente para preencher os campos do formulário a partir do objeto Cliente da seleção do combobox;
25   }else{
26    JOptionPane.showMessageDialog(null, "Escolha um cliente na lista para pesquisar.");
27    //Caso o campo combobox esteja em branco ao clicar em Selecionar, abre diálogo orientando escolher primeiro um cliente da lista;
28   }
29   }else if(e.getActionCommand().equals(this.btnLimpar.getActionCommand())){
30    //Ao clicar no botão Limpar (ícone-vassoura);
31    this.limpaTela();
32    //Aciona o método limpaTela, limpando os campos do formulário;
33   }else if(e.getActionCommand().equals(this.btnExcluir.getActionCommand())){
34    //Caso o botão acionado seja Excluir (ícone "X");
35    String[] options = {"Sim", "Não"};
36    //Cria variável tipo vetor para definir botão de seleção ativado por padrão;
37    int conf = JOptionPane.showOptionDialog(null, null, "CONFIRMA EXCLUSÃO?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]);
38    //Cria variável tipo int com configuração de janela de diálogo de confirmação de exclusão;
39    if(conf == JOptionPane.YES_OPTION){
40     //Condicional: se a opção for SIM na confirmação...
41     Cliente c = this.montaCliente();
42     //Chama o método montaCliente para pegar os dados e gravar no objeto Cliente c;
43     ClienteCT cbc = new ClienteCT();
44     //Instancia a classe de controle ClienteCT;
45     cbc.delete(c);
46     //Chama o método delete da classe ClienteCT para excluir dados do objeto Cliente (c) no banco;
47     this.limpaTela();
48     //Limpa os campos após excluir os dados do banco;
49     this.carregaLista();
50     //Carrega a lista do combobox, atualizando após exclusão;
51    }
52   }else if(e.getActionCommand().equals(this.btnEditar.getActionCommand())){
53    //Caso o botão acionado seja Editar (ícone Lápis);
54    String[] options = {"Sim", "Não"};
55    //Cria variável tipo vetor para definir botão de seleção ativado por padrão;
56      int conf = JOptionPane.showOptionDialog(null, null, "CONFIRMA EDIÇÃO?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]);
57    //Cria variável tipo int com configuração de janela de diálogo de confirmação de edição;
58      if(conf == JOptionPane.YES_OPTION){
59     //Condicional: se a opção for SIM na confirmação...
60     Cliente c = this.montaCliente();
61     //Chama o método montaCliente para pegar os dados e gravar no objeto Cliente c;
62     ClienteCT cbc = new ClienteCT();
63     //Instancia a classe de controle ClienteCT;
64     cbc.update(c);
65     //Chama o método update da classe ClienteCT para atualizar dados do objeto Cliente (c) de montaCliente no banco;
66     this.limpaTela();
67     //Limpa os campos após atualizar os dados do banco;
68     this.carregaLista();
69     //Carrega a lista do combobox, atualizando após edição;
70    }
71   }
72  }
Confira no phpMyAdmin a gravação no banco:

phpMyAdmin


Escreva nos comentários, clique em curtir, visite a página do Facebook  e compartilhe com seus amigos. Até a próxima!

Comente com o Facebook:

0 comentários:

Postar um comentário

 
Powered by Blogger