Hola, soy nuevo en el foro y praticamente en el mundo de la programación. Estoy haciendo una aplicación en java apoyada en mysql a través del IDE NetBeans6.5
El tema es que tengo una acción en la clase comercialelectrica.Cliente.java que me rellena un DefaultTableModel llamado tabla.
Esta tabla la paso desde el JDialog comercialelectrica.modulos.ListaClientes, y está compuesta de un JTable en la que se muestra el ID, DNI,Nombre y Apellidos de unos clientes que son extraidos de la BD mysql a través de una consulta en la que los obtenemos relacionandolos con sus identificadores, que se obtienen de un array que contiene dichos identificadores: Mucho lio no?
El problema es que a pesar de que sigo los pasos que se indican en algun comentario de este foro y otros en los que se instancia a DefaultTableModel, no consigo nada.
Pongo el codigo y lo comento.
ListaClientes.java:
package comercialelectrica.modulos;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
/**
*
* @author Pablo
*/
public class ListaClientes extends javax.swing.JDialog {
public ListaClientes(java.awt.Dialog parent, boolean modal) {
super(parent, modal);
initComponents();
DefaultTableModel modelo = new DefaultTableModel();
this.jTable1 = new JTable(modelo);
List array = new ArrayList(BuscarCliente.getArray());/* Aquí recupero los identificadores que me pasan por array de un interfaz anterior*/
comercialelectrica.Cliente.RellenarTablaClientes(a rray, modelo);
this.jTable1.setModel(modelo);// Esto creo q no me esta haciendo nada
Como proviene de otro JDialog que me pasa un array con los identificadores de una serie de clientes, me han dicho que debo ponerlo seguidamente de initComponents(); para que se autorellene la interfaz con lo que quiera.
Ahora la funcion RellenarTablaClientes al que le pasamos el array con los identificadores y el DefaultTableModel:
public static void RellenarTablaClientes(List arrayid, DefaultTableModel tabla){
Connection con = null;
try {
con = DriverManager.getConnection(url, user, password);
con.setAutoCommit(false);
String sql = "SELECT CLIENTEID,DNI,NOMBRE,APELLIDOS FROM cliente WHERE CLIENTEID=?";
PreparedStatement pstm = con.prepareStatement(sql);
ResultSet rs = null;
int i = 0;
while(i<arrayid.size()){
pstm.setString(1, arrayid.get(i).toString());
rs = pstm.executeQuery();
if(rs.next()){
String[] datos = new String[4];
for(int j=0;j<4;j++){
datos[j] = rs.getString(j+1);
//System.out.println(datos[j]);
//Hasta aquí, OK, me escribiría los 4 campos de cada cliente
}
tabla.addRow(datos); //Esto no sé si hace algo o no porque en la clase Listaclientes.java no se pintan esos nombres,dni,... en la jTable
}
i++;
}
rs.close();
pstm.close();
con.commit();
}
catch (SQLException ex) {
ex.printStackTrace();
}
try {
if (con != null) {
con.rollback();
}
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
finally{
try {
if (con != null) {
con.close();
}
}
catch (SQLException ex3) {
ex3.printStackTrace();
}
}
}
A ver si me dicen porque no se pintan el ID,DNI,Nombre, y Apellidos en el JDialog ListaClientes cuando llamo a la accion RellenarTablaClientes de la clase Cliente.java. Por cierto todo compila bien y no da errores.
Lo que tengo dudas es si se hace bien la llamada a RellenarTablaClientes, y si en esta la linea:
tabla.addRow(datos); se están añadiendo los datos.
Mucahs gracias de antemano