Estoy haciendo un programa de proyecto para mi escuela, y necesito ayuda...
He usado JTable para que se representen en tablas de dos columnas unos datos que extraigo de una base de datos MySQL.
La cosa es: SI FUNCIONA, extrae correctamente los datos y los muestra en la tabla, PERO cuando agrego un dato nuevo a la base de datos y vuelvo a llamar a mi clase TablaVisualizarDatos sucede que no muestra las actualizaciones y tengo que cerrar el programa y volverlo a cargar para que se muestren los datos agregados a la base de datos mientras el programa estaba en ejecución.
¿Alguien por favor podría ayudarme a resolver este inconveniente?, la verdad ya no logro dar con una...
Código:
package calcularestadisticas; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.JScrollPane; import javax.swing.JFrame; import java.awt.*; import java.awt.event.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JOptionPane; public class TablaVisualizarDatos extends JFrame { public TablaVisualizarDatos() { super("Datos Capturados"); } void VisualizarDatos() { //Ajusto mi ventana al centro de la pantalla this.setLocationRelativeTo(null); //creamos el arreglo de objetos que contendra el //contenido de las columnas Object[] dato = new Object[2]; // creamos el modelo de Tabla DefaultTableModel dtm = new DefaultTableModel(); dtm.addColumn("Valor Ingresado"); dtm.addColumn("Cantidad de Veces"); try{ Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost/calculadoraestadistica","root","jrmiron85"); //JOptionPane.showMessageDialog(null, "La conexion se ha realizado con exito"); Statement estado = (Statement) con.createStatement(); String Consultar = "SELECT ID, Valor, COUNT( * ) as repetidos FROM datos GROUP BY Valor HAVING COUNT( * ) > 0"; //JOptionPane.showMessageDialog(null, Agregar); ResultSet resultado = estado.executeQuery(Consultar); //JOptionPane.showMessageDialog(null, "El dato: "+Dato+" fue capturado exitosamente."); System.out.println("Consulta de valores a la Base de Datos exitosa."); while(resultado.next()){ dato[0] = resultado.getString("Valor"); dato[1] = resultado.getString("repetidos"); dtm.addRow(dato); } } catch(SQLException ex){ JOptionPane.showMessageDialog(null,"Error de mysql"); } catch(ClassNotFoundException e){ } catch(Exception e){ JOptionPane.showMessageDialog(null, "Se ha encontrado un error que es: "+e.getMessage()+""); } // se crea la Tabla con el modelo DefaultTableModel final JTable table = new JTable(dtm); //se define el tamaño table.setPreferredScrollableViewportSize(new Dimension(250, 300)); //Creamos un JscrollPane y le agregamos la JTable JScrollPane scrollPane = new JScrollPane(table); //Agregamos el JScrollPane al contenedor getContentPane().add(scrollPane, BorderLayout.CENTER); //manejamos la salida addWindowListener(new WindowAdapter() { }); this.pack(); this.setVisible(true); } }