/* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new frameEditaContato().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jBtCancelar; private javax.swing.JButton jBtSalvar; private javax.swing.JLabel jLbIcon; private javax.swing.JLabel jLbId; private javax.swing.JLabel jLbNome; private javax.swing.JLabel jLbTelefone; private javax.swing.JPanel jPanel1; private javax.swing.JTextField jTFId; private javax.swing.JTextField jTFNome; private javax.swing.JTextField jTFTelefone; // End of variables declaration }Tirando a parte do NB se o seu codigo estiver como o acima, com dao criado , vamos fazer salvar os dadosIV) Agora em modo Design clique duas vezes no botao salvar : vamos editar a funcao jBtSalvarActionPerformedDica : dentro da funcao escreva salvarContato() (que ainda nao existe) e veja a sugestao do NB, aceite;Figura 36 - Mais uma vez utilize o NB p/ gerar a funcao. Pessoalmente acho q usar esses recursos diminuem a margem de erros e nomes que nao sejam evidentesAntes de mostrar a funcao salvarContato, algumas explicacoes :Acho mais facil criar + uma variavel do tipo Contato e encapsular as que ja temos, e criar um novo Contato no construtor do frame, que ja tera um id=0 e nao precisamos ficar convertendo o valor do id p/ String a todo momento:, resumindo modifiquei a classe , segue ela abaixopackage springlesson06.view.contato;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.JOptionPane;import springlesson06.dao.ContatoDAO;import springlesson06.model.Contato;public class frameEditaContato extends javax.swing.JFrame { private frameListaContatos flC; private ContatoDAO dao; private Contato contato; //novo construtor public frameEditaContato(frameListaContatos flC, ContatoDAO daoInformed) { initComponents(); this.flC = flC; this.dao = daoInformed; this.contato = new Contato(); // que ja possui um id=0 } // metodo obrigatorio private frameEditaContato() { } public void carregaContato(Contato C) { this.setContato(C); jTFId.setText(C.getId() + ""); jTFNome.setText(C.getNome()); jTFTelefone.setText(C.getTelefone()); } private void salvarContato() { Contato C = new Contato(); //Solucao 1 : validacao manual String preMessage = "Verifique os seguintes erros:\n"; String message = ""; if ("".equals(jTFNome.getText())) { message += "- Nome deve ser preenchido \n"; } if (message.length() == 0) { if ("".equals(jTFId.getText())) { C.setId(0); } else { C.setId(Integer.parseInt(jTFId.getText())); C.setNome(jTFNome.getText()); C.setTelefone(jTFTelefone.getText()); } this.contato = C; try { this.getDao().salvar(this.getContato()); System.out.println("Salvando Contato:" + C.getNome()); this.getFlC().atualizaGrade(); this.dispose(); } catch (java.lang.NullPointerException npe) { System.out.println("Erro ao Salvar o Contato."); Logger.getLogger(frameEditaContato.class.getName()).log(Level.SEVERE, null, npe); } } else { JOptionPane.showMessageDialog(null, preMessage + message); } }//NB CODE public static void main(String args[]) { /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new frameEditaContato().setVisible(true); } }); } private void jBtSalvarActionPerformed(java.awt.event.ActionEvent evt) { salvarContato(); } public static void main(String args[]) { /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new frameEditaContato().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jBtCancelar; private javax.swing.JButton jBtSalvar; private javax.swing.JLabel jLbIcon; private javax.swing.JLabel jLbId; private javax.swing.JLabel jLbNome; private javax.swing.JLabel jLbTelefone; private javax.swing.JPanel jPanel1; private javax.swing.JTextField jTFId; private javax.swing.JTextField jTFNome; private javax.swing.JTextField jTFTelefone; // End of variables declarationpublic ContatoDAO getDao() { return dao; } public Contato getContato() { return contato; } public void setContato(Contato contato) { this.contato = contato; }}Apos as alteracoes , 12) Teste o programa.Selecione algum registro , clique em editar , altere o nome e clique em salvar, o resultado deve ser esseFigura 37 - Observe o Log, mas o