Foros del Web » Programación para mayores de 30 ;) » Java »

JTable no muestra datos de consulta

Estas en el tema de JTable no muestra datos de consulta en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/06/2009, 17:47
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
JTable no muestra datos de consulta

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

Última edición por Zidek; 03/06/2009 a las 07:42
  #2 (permalink)  
Antiguo 02/06/2009, 17:50
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: JTable no refleja datos desde DefaultTableModel

Si necesitais preguntar algo porque me explico mal, por favor, hacedlo.

Tambien decir que el JTable de ListaClientes, lo tengo creado como interfaz grafica con las columnas : IDENTIFICADOR, DNI, NOMBRE y APELLIDOS, pero obviamente, y po eso el din de este mensaje, sin que estén el resto de celdas rellenadas con datos de clientes

Gracias

Última edición por Zidek; 03/06/2009 a las 08:23
  #3 (permalink)  
Antiguo 03/06/2009, 09:27
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: JTable no muestra datos de consulta

Me urge mucho para este viernes por la mañana, por favor que alguien me de alguna idea o me corrija lo que esté haciendo mal.

Gracias
  #4 (permalink)  
Antiguo 03/06/2009, 09:44
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: JTable no muestra datos de consulta

sencillo, tu pones tabla.addRow(datos); que es valido, pero solo localmente ya que esta dentro de un metodo
luego cuando haces this.jTable1.setModel(modelo);, tambien esta bien, solo que modelo nunca se modifico

solucion:
1- crear la variable modelo de manera global y modificarla en el metodo RellenarTablaClientes o

2- hacer que ese metodo devuelva un DefaultTableModel y ese asignarlo al JTable

Saludos
  #5 (permalink)  
Antiguo 03/06/2009, 09:54
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: JTable no muestra datos de consulta

Gracias por tu tiempo amigo, ahora mismo lo pruebo
  #6 (permalink)  
Antiguo 03/06/2009, 10:14
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: JTable no muestra datos de consulta

Cita:
Iniciado por drac94 Ver Mensaje
sencillo, tu pones tabla.addRow(datos); que es valido, pero solo localmente ya que esta dentro de un metodo
luego cuando haces this.jTable1.setModel(modelo);, tambien esta bien, solo que modelo nunca se modifico

solucion:
1- crear la variable modelo de manera global y modificarla en el metodo RellenarTablaClientes o

2- hacer que ese metodo devuelva un DefaultTableModel y ese asignarlo al JTable

Saludos
1- He puesto la variable modelo fuera del metodo como public, pero no sé a q t e refieres con modificarla en RellenarTablaClientes por lo que he optado por el segundo paso:

2-Lo he convertido en funcion que devuelve el DefaultTableModel con su (return tabla). Compila perfectamente
En ListaClientes he puesto:
modelo = comercialelectrica.Cliente.RellenarTablaClientes(a rray, modelo);
this.jTable1.setModel(modelo);


Pero la tabla sigue apareciendo vacía, tan solo con los nombres de las columnas que puse por medio del interfaz grafico que permite netbeans
  #7 (permalink)  
Antiguo 04/06/2009, 04:12
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: JTable no muestra datos de consulta

Alguien me lo puede explicar por favor?
  #8 (permalink)  
Antiguo 04/06/2009, 05:45
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: JTable no muestra datos de consulta

Cita:
Iniciado por Zidek Ver Mensaje
Alguien me lo puede explicar por favor?
El porque no me escribía nada en el jtable una vez hecho el paso 2 que me indicaba drac94, era porque al instanciar el DefaultTableModel, tenia que pasarle como parametros el nombre de las columnas como un String[] y los datos que le estaba pasando como datos[]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:53.