facilita isso ?- Clique com o botao direito no botao Sair. Escolha Events>>Action>>actionPerformed , que significa quando o usuario clicar nesse botao.Figura 17 - Adicionando eventosFigura 18 - actionPerformed , usaremos muito esse evento.2 - Clique duas vezes nesse botao que o NB ja criara o codigo necessario e colocamos o que precisamos dentro dessa funcao : private void jBtSairActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: }que encerraremos o programa private void jBtSairActionPerformed(java.awt.event.ActionEvent evt) { System.out.println("Encerrando programa "); System.exit(0); }veja o que o NB gerou p/ esse evento : jBtSair.setIcon(new javax.swing.ImageIcon(getClass().getResource("/springlesson06/images/icon_sair.png"))); // NOI18N jBtSair.setText("Sair"); jBtSair.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtSairActionPerformed(evt); } });3) Teste o programa (isso quer dizer , aperte o F6 do teclado ou menu Run>> Project) e clique no botao Sair.Figura 19 - Executando o Projeto o log do NB deve mostrar algo assim :Sep 21, 2012 1:37:33 PM org.springframework.context.support.AbstractApplicationContext prepareRefreshINFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5815338: startup date [Fri Sep 21 13:37:33 BRT 2012]; root of context hierarchySep 21, 2012 1:37:33 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitionsINFO: Loading XML bean definitions from class path resource [beans-definitions.xml]Sep 21, 2012 1:37:34 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletonsINFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@36c8570c: defining beans [dataSource,jdbcTemplate,ContatoDao]; root of factory hierarchySep 21, 2012 1:37:34 PM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassNameINFO: Loaded JDBC driver: com.mysql.jdbc.DriverSep 21, 2012 1:37:36 PM org.springframework.jdbc.datasource.SingleConnectionDataSource initConnectionINFO: Established shared JDBC Connection: com.mysql.jdbc.JDBC4Connection@316d3536Encerrando programa BUILD SUCCESSFUL (total time: 33 seconds)4) Vamos acertar o label - na funcao carregaTabela que esta em nossa Classe Main vamos adicionar a linha q atualiza o campo jlbTotal ficando assim : private void carregaTabela(){ ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-definitions.xml"); ContatoDAO dao = (ContatoDAO) ctx.getBean("contatoDao"); ContatoTableModel tableModel = new ContatoTableModel(dao.listar()); jTable1.setModel(tableModel); jLbTotal.setText(tableModel.getRowCount()+""); }5) Teste o programa.o resultado deve ser esse :Figura 21 - Execucao do programa, repare o total de usuarios : 26) Para editar e criar um novo Contato , vamos criar outro Frame de nome frameEditaContato no package springlesson06.view.contato:I) Crie o JFrameFigura 22 - Adicionando outro JFrameFigura 23 - nomeie o JFrame frameEditaContato, usaremos p/ Insert e UpdateII) Adicionando os campose nesse formulario precisamos criar campos que atendam os campos da tabela no banco:o que precisamos adicionar nesse form ?- Adicionar - 1 Panel - Painel com borda preta p/ nao deixar os elementos soltos na tela - jPanel1-4 Labels-- icone usuario (opcional) jLbIcon-- id jLbId-- nome jLbNome-- telefone jLbTelefone- 3 campos texto-- id - apenas leitura jTFId-- nome jTFNome-- telefone jTFTelefone- 2 botoes-- salvar jBtSalvar-- cancelar jBtCancelarFigura 24 - Apos arrastar os elementos p/ o FormApos customizado :Figura 25 - Apos editar as propriedades dos elementos do Form e o modo PreviewVamos ver o que o NB fez com o codigo la dentro da funcao initComponents: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; jPanel1 = new javax.swing.JPanel(); jTFTelefone = new javax.swing.JTextField(); jLbTelefone = new javax.swing.JLabel(); jLbNome = new javax.swing.JLabel(); jTFNome = new javax.swing.JTextField(); jTFId = new javax.swing.JTextField(); jLbId = new javax.swing.JLabel(); jBtSalvar = new javax.swing.JButton(); jBtCancelar = new javax.swing.JButton(); jLbIcon = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Contato"); setResizable(false); jPanel1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0,