0), 1, true)); jLbTelefone.setText("TELEFONE"); jLbNome.setText("NOME"); jTFId.setEnabled(false); jLbId.setText("ID"); jBtSalvar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/springlesson06/images/icon_save.png"))); // NOI18N jBtSalvar.setText("Salvar"); jBtCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/springlesson06/images/icon_cancel_menor.png"))); // NOI18N jBtCancelar.setText("Cancelar"); jLbIcon.setIcon(new javax.swing.ImageIcon(getClass().getResource("/springlesson06/images/user.png"))); // NOI18Ne as novas imagens :cancelar salvar III) Vamos adicionar a funcao que carrega o contato para o formulario logo abaixo do contrutor frameEditaContato: public frameEditaContato() { initComponents();}public void carregaContato(Contato C){ jTFId.setText(C.getId()+""); jTFNome.setText(C.getNome()); jTFTelefone.setText(C.getTelefone()); }7) Agora precisaremos alterar nosso ContatoTableModel p/ retornar um object Contato para passar p/ o carregaContato que acabamos de fazer entao em nossa classe springlesson06.model.ContatoTableModel vamos adicionar a seguinte funcao : public Contato getObjectAtRow(int row){ return lista.get(row); } 8) Vamos fazer o botao editar da lista de contatos abrir o frame frameEditaContato passando o objeto Contato :Clique duas vezes no botao jBtEditar private void jBtEditarActionPerformed(java.awt.event.ActionEvent evt) { Contato C = tableModel //??????? }e agora ?? nao consigo acessar o objeto criado na funcao carregaTabela. Como resolve isso ?R1 : Criamos um objeto ContatoTableModel privado nessa classe p/ conter o tableModel , encapsulamos e utilizamos Get/Set p/ acessa-lo;R2 : Criamos um objeto Contato privado nessa classe p/ conter o Contato Selecionado , encapsulamos e utilizamos Get/Set p/ acessa-lo;R3: etc... Pensanndo.. o que e melhor ? o que precisaremos acessar ?Vamos pensar na Resposta 1. alguns trechos do codigo modificado :Resposta 1 do passo 08//declaracaopublic class frameListaContatos extends javax.swing.JFrame { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-definitions.xml"); ContatoDAO dao = (ContatoDAO) ctx.getBean("contatoDao"); ContatoTableModel tableModel = new ContatoTableModel(dao.listar());//construtorpublic frameListaContatos() { initComponents(); carregaTabela(); } private void carregaTabela(){ jTable1.setModel(this.tableModel); jLbTotal.setText(this.tableModel.getRowCount()+""); }//botao sair private void jBtSairActionPerformed(java.awt.event.ActionEvent evt) { System.out.println("Encerrando programa "); System.exit(0); }//botao editar private void jBtEditarActionPerformed(java.awt.event.ActionEvent evt) { Contato C = this.tableModel.getObjectAtRow(jTable1.getSelectedRow()); frameEditaContato fec = new frameEditaContato(); fec.carregaContato(C); fec.setVisible(true); }8) ainda : R1 Teste o programa.Ao carregar o form com o titulo Meus Contatos , Selecione algum contato e clique no botao jBtEditar.Funcionou ?? Boa , entao : - Verifique que o programa permite abrir varias janelas do mesmo registro. Sera que isso e bom ?? - Essa implementacao nao foi nada elegante. Cade o encapsulamento ? Figura 26 - Resposta 1 do passo 088) ainda : do jeito q esta vamos implementar a Resposta 2 :Resposta 2 do passo 08 : I) Vamos adicionar a jTable um eventoFigura 27 -Adicionando um evento de clique a nossa jTablee o o codigo modificadopublic class frameListaContatos extends javax.swing.JFrame { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-definitions.xml"); ContatoDAO dao = (ContatoDAO) ctx.getBean("contatoDao"); ContatoTableModel tableModel = new ContatoTableModel(dao.listar()); Contato contatoAtivo; /** * Creates new form frameListaContatos */ public frameListaContatos() { initComponents(); carregaTabela(); } private void carregaTabela() { jTable1.setModel(this.tableModel); jLbTotal.setText(this.tableModel.getRowCount() + ""); } private void carregaContato() { Contato C = this.tableModel.getObjectAtRow(jTable1.getSelectedRow()); this.contatoAtivo = C; System.out.println("Contato Ativo na memoria: " + C.getNome()); } private void abreFrameEdit(Contato C) { frameEditaContato fec = new frameEditaContato(); fec.carregaContato(C); fec.setVisible(true); } private void sair() { System.out.println("Encerrando programa "); System.exit(0); }/// NB CODE private void jBtSairActionPerformed(java.awt.event.ActionEvent evt) { sair(); } private void jBtEditarActionPerformed(java.awt.event.ActionEvent evt) { abreFrameEdit(this.contatoAtivo); } private void jTable1MouseClicked(java.awt.event.MouseEvent evt) { carregaContato(); } public static void main(String args[]) {...} // Variables declaration - do not modify private javax.swing.JButton jBtEditar; private javax.swing.JButton jBtNovo; private javax.swing.JButton jBtRemover; private javax.swing.JButton jBtSair; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLbTotal; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable