frameEditaContato chamada janelaEdicao e passamos um novo objeto passando o construtor sem parametros() na funcao abreFrameEdit q recebe o contato Ativo, se estiver carregado.modificacao :public final class frameListaContatos extends javax.swing.JFrame { private ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-definitions.xml"); private ContatoDAO dao = (ContatoDAO) ctx.getBean("contatoDao"); private ContatoTableModel tableModel = new ContatoTableModel(dao.listar()); private Contato contatoAtivo; private frameEditaContato janelaEdicao; public frameEditaContato getJanelaEdicao() { return janelaEdicao; } public void setJanelaEdicao(frameEditaContato janelaEdicao) { this.janelaEdicao = janelaEdicao; } /** * Creates new form frameListaContatos */ public frameListaContatos() { initComponents(); carregaTabela(); setJanelaEdicao(new frameEditaContato(this)); }// e na funcao usa o objeto janelaEdicao pelo metodo getJanelaEdicao(); private void abreFrameEdit(Contato C) { if (C == null) { JOptionPane.showMessageDialog(null, "Selecione um Contato"); } else { frameEditaContato fec = getJanelaEdicao(); fec.carregaContato(C); fec.setVisible(true); } }}e.. Teste o programa.OBS, Como estamos utilizando um objeto Contato, observe em seu Mysql , que podemos abrir varias janelas sem aumentar as conexoes :Figura 33 - Usando o MysqlWorkBench para monitorar as conexoes OBS : Pelo MysqlWORKBench e possivel realizar diversas tarefas administrativas, aproveite a conexao criada e a utilize na secao Server AdministrationFigura 34 - Opcao Server Administration do MWB, vale a pena conferir11) Salvando os registros (UPDATE) : CRUDI) Vamos adicionar uma funcao salvar em nosso contatoDAO springlesson06.dao.ContatoDAOpublic void salvar(Contato C){ String sql=null; List<Object> params = new ArrayList<Object>(); if ( C.getId()==0 ){ // novo contato sql="INSERT INTO `springlessons`.`contato`" + "(`id`,`nome`,`telefone`) VALUES (?,?,?)"; params.add(0); params.add(C.getNome()); params.add(C.getTelefone()); }else { //atualiza existente sql="UPDATE `springlessons`.`contato` " + " SET `nome` = ?," + " `telefone` = ?" + " WHERE `id` = ? "; params.add(C.getNome()); params.add(C.getTelefone()); params.add(C.getId()); }// se der erros descomente abaixo e veja se o contato chegou aqui, mais p/ frente veremos q isso e uma pegadinha //System.out.println("SQL:" + sql); t.update(sql, params.toArray()); }II) Vamos modificar o construtor do objeto Contato inicializando ele com id=0, devido a verificacao no metodo salvar, abra a classe Contato springlesson06.model.Contatodica : com a classe aberta aperte ctrl + espaco e escolha a 1a opcao generateFigura 35 - Classe Contato, utilizando os atalhos do NB p/ gerar as funcoesficando assim :package springlesson06.model;public class Contato { private int id; private String nome; private String telefone; public Contato() { this.id = 0; } public Contato(int id, String nome, String telefone) { this.id = id; this.nome = nome; this.telefone = telefone; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getTelefone() { return telefone; } public void setTelefone(String telefone) { this.telefone = telefone; }}III) no frameEditaContato que nao conhece o DAO, precisamos informar onde serao salvos os dados.Para isso , vamos adicionar um objeto dao do tipo ContatoDAO `a classe, e adicionar um objeto desse tipo no construtor do Frame springlesson06.view.contato.frameEditaContato:package springlesson06.view.contato;import springlesson06.dao.ContatoDAO;import springlesson06.model.Contato;public class frameEditaContato extends javax.swing.JFrame { frameListaContatos flC; ContatoDAO dao ; //novo construtor public frameEditaContato(frameListaContatos flC,ContatoDAO daoInformed) { initComponents(); this.flC = flC; this.dao = daoInformed; } // metoodo obrigatorio usado em Run private frameEditaContato() { } public void carregaContato(Contato C){ jTFId.setText(C.getId()+""); jTFNome.setText(C.getNome()); jTFTelefone.setText(C.getTelefone()); }//NB CODE public static void main(String args[]) {