Problema de actualizacion de Jtable

Egoitz
15 de Diciembre del 2008
Hola buenas. Tengo un JPanel en el que tengo un pequeño formulario a un lado y al otro un JScrollPane que contiene un JTable.

La cuestion es que cuando relleno el formulario quiero que esa informacion me la guarde en una base de datos y despues vuelva a actualizar la tabla. ya que esta tabla despues de guardar esa informacion tenemos una tupla mas en la base de datos. la tabla la relleno con un resultset.

meto aqui el codigo del JPanel. en el metodo GuardarInfo() es donde habria que refrescar la tabla.

package aplicaciongrafica;

import DAO.ConductoresDAO;
import DAO.ConductoresDAO.*;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;

import java.awt.ScrollPane;
import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import aplicaciongrafica.GuardarInformacion.*;

import com.mysql.jdbc.ResultSet;

import java.awt.BorderLayout;

import javax.swing.table.DefaultTableModel;

import modelo.ConductoresVO;

public class PanelConductores extends JPanel implements ActionListener{

private JLabel labelNombre = new JLabel();
private JLabel labelApe1 = new JLabel();
private JLabel labelApe2 = new JLabel();
private JLabel labelPoblacion = new JLabel();
private JLabel labelDireccion = new JLabel();
private JTextField textNombre = new JTextField();
private JTextField textApe1 = new JTextField();
private JTextField textApe2 = new JTextField();
private JTextField textPoblacion = new JTextField();
private JTextField textDireccion = new JTextField();
private JButton aceptar= new JButton();
private JButton atras= new JButton();
private JLabel kunk = new JLabel();
private JLabel labelCodigoPostal = new JLabel();
private JTextField textCodigoPostal = new JTextField();
private JLabel labelDNI = new JLabel();
private JTextField textDNI = new JTextField();
private JScrollPane panel=new JScrollPane();
public PanelConductores() {
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}

private void jbInit() throws Exception {
this.setLayout( null );
labelNombre.setText("Nombre");
labelNombre.setBounds(new Rectangle(35, 40, 65, 30));
labelApe1.setText("Apellido 1");
labelApe1.setBounds(new Rectangle(35, 85, 65, 30));
labelApe2.setText("Apellido 2");
labelApe2.setBounds(new Rectangle(35, 130, 65, 30));
labelPoblacion.setText("Poblacion");
labelPoblacion.setBounds(new Rectangle(35, 175, 65, 30));
labelDireccion.setText("Direccion");
labelDireccion.setBounds(new Rectangle(35, 220, 65, 30));
aceptar.setBounds(new Rectangle(85, 265, 110, 30));
aceptar.setText("Guardar");
textNombre.setBounds(new Rectangle(115, 40, 100, 30));
textApe1.setBounds(new Rectangle(115, 85, 100, 30));
textApe2.setBounds(new Rectangle(115, 130, 100, 30));
textPoblacion.setBounds(new Rectangle(115, 175, 100, 30));
textDireccion.setBounds(new Rectangle(115, 220, 180, 30));



labelCodigoPostal.setText("C.P");
labelCodigoPostal.setBounds(new Rectangle(245, 175, 65, 30));
textCodigoPostal.setBounds(new Rectangle(290, 180, 100, 30));
labelDNI.setText("DNI");
labelDNI.setBounds(new Rectangle(245, 40, 65, 30));
textDNI.setBounds(new Rectangle(285, 40, 100, 30));


atras.setBounds(new Rectangle(200,265,110,30));
atras.setText("atras");

//JScrollPane panel = new JScrollPane(crearTablaConDatos());
panel.setViewportView(crearTablaConDatos());
panel.setBounds(new Rectangle(440, 50, 800, 500));


this.add(panel, null);

this.add(atras,null);
atras.addActionListener(this);

this.add(textDNI, null);
this.add(labelDNI, null);
this.add(textCodigoPostal, null);
this.add(labelCodigoPostal, null);
this.add(aceptar,null);
this.add(textNombre, null);
this.add(textApe1, null);
this.add(textApe2, null);
this.add(textPoblacion, null);
this.add(textDireccion, null);
this.add(labelNombre, null);
this.add(labelApe1, null);
this.add(labelApe2, null);
this.add(labelPoblacion, null);
this.add(labelDireccion,null);

aceptar.addActionListener(this);

this.setVisible(true);
this.setSize(new Dimension(785, 452));
}

public void actionPerformed (ActionEvent e){
if (e.getSource()==aceptar){
kunk.setVisible(false);
if(comprobarCampos()){
GuardarInfo();
}
else{
errorCamposNoRellenados();
}
}
else if(e.getSource()==atras){
GuardarInformacion.frame.setVisible(false);
MenuPrincipal mp = new MenuPrincipal();
}
}
public void borrarDatos(){
textNombre.setText(null);
textApe1.setText(null);
textApe2.setText(null);
textPoblacion.setText(null);
textDireccion.setText(null);
textDNI.setText(null);
textCodigoPostal.setText(null);
}
public boolean comprobarCampos(){
if((textNombre.getText().equals(""))||(textApe1.getText().equals(""))||(textApe2.getText().equals(""))||(textPoblacion.getText().equals(""))||(textDireccion.getText().equals(""))||(textDNI.getText().equals(""))||(textCodigoPostal.getText().equals(""))){
System.out.println("no estan todos los campos rellenados!!!!");
return false;
}
else{
System.out.println("Estan todos los campos rellenados");
return true;
}
}

public void errorCamposNoRellenados() {
this.add(kunk,null);
kunk.setText("Rellena todos los campos!!!");
kunk.setBounds(new Rectangle(40, 300, 180, 30));
kunk.setForeground(Color.red);
kunk.setVisible(true);
}

public void GuardarInfo() {
ConductoresVO c=new ConductoresVO(textDNI.getText(),textNombre.getText(),textApe1.getText(),textApe2.getText(),textCodigoPostal.getText(),textPoblacion.getText(),textDireccion.getText());
try{
ConductoresDAO cdao=new ConductoresDAO();
cdao.addConductor(c);
//aqui es donde habria que refrescar la tabla
borrarDatos();
}catch(Exception ex){System.out.println(ex);}
}

public JTable crearTablaConDatos() throws Exception {

ConductoresDAO cdao = new ConductoresDAO();
ResultSet rs = (ResultSet)cdao.getDatos();

DefaultTableModel modelo = new DefaultTableModel();
JTable tabla = new JTable(modelo);
// Creamos las columnas.
modelo.addColumn("ID");
modelo.addColumn("DNI");
modelo.addColumn("NOMBRE");
modelo.addColumn("APELLIDO 1");
modelo.addColumn("APELLIDO 2");
modelo.addColumn("CODIGO POSTAL");
modelo.addColumn("POBLACION");
modelo.addColumn("DIRECCION");

// Bucle para cada resultado en la consulta
while (rs.next())
{
// Se crea un array que será una de las filas de la tabla.
Object [] fila = new Object[8]; // Hay tres columnas en la tabla

// Se rellena cada posición del array con una de las columnas de la tabla en base de datos.
for (int i=0;i<8;i++)
fila[i] = rs.getObject(i+1); // El primer indice en rs es el 1, no el cero, por eso se suma 1.
// Se añade al modelo la fila completa.
modelo.addRow(fila);
}
return tabla;
}
}