elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Solucionado] JAVA Como Refrescar JTable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] JAVA Como Refrescar JTable  (Leído 21,887 veces)
MiguelP

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: JAVA Como Refrescar JTable
« Respuesta #10 en: 20 Marzo 2014, 00:04 am »

Muchas gracias por la ayuda amigo, hice exactamente lo que dices es mas puse un print y me sale que hace el select * from mitabla pero no se refresca el JTable... es mas puse

tblDatos .setModel(agregarFila(modelo));

y tampoco...se ejecuta el select pero no refresca el jtable que crees que pueda hacer


En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: JAVA Como Refrescar JTable
« Respuesta #11 en: 20 Marzo 2014, 00:29 am »

Hola de nuevo,

Cambia esto:
Código
  1. while(rs.next()) {
  2.     for(byte i=0; i<columnas; i++) {
  3.          data[i] = resultmeta.getObject(i+1);
  4.     }
  5. }

Por esto:

Código
  1. while(rs.next()) {
  2.     data[0] = (String) resultmeta.getString("nombreColumna");
  3.     // asi con las demas propiedades. El casting de acuerdo al tipo de dato
  4.     if(rs.next() == null) { modelo.addRow(data); } // si ya no hay filas en la tabla se inserta la fila en la JTable
  5. }

Fuera del while imprime el array data para ver los datos que han sido recuperados de la database:

Código
  1. for(Object e : data) {
  2. System.out.println("Valor:"+e+"\tTipo de dato: "+e.getClass().getName());
  3. }


« Última modificación: 20 Marzo 2014, 04:46 am por Mitsu » En línea

MiguelP

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: JAVA Como Refrescar JTable
« Respuesta #12 en: 20 Marzo 2014, 15:17 pm »

Hola que tal Mitsu. probé tu código y tengo un problema para empezar tu me lo pasas de un modo yo lo tenia de otro y lo adecue te lo pongo para saber si hace lo mismo:

Código:
public DefaultTableModel agregarFila(DefaultTableModel modelo) throws SQLException {

Conexion conn = new Conexion();
    Statement sf = conn.getConnection().createStatement();
    String cadena = "Select * from Cliente";
    ResultSet rs = sf.executeQuery(cadena);
    System.out.println(cadena);
ResultSetMetaData rsMd = rs.getMetaData();
int CantidadColumnas = rsMd.getColumnCount();

Object datos[]=new Object[CantidadColumnas];
        try {
            /*while (rs.next()) {
                for (int i = 0; i <CantidadColumnas; i++) {
                        datos[i] = rs.getObject(i + 1);
                      //  System.out.println("fil : "+datos[i]);
                }
                modelo.addRow(datos);
               
            }
rs.close();
        } catch (Exception e) {
        e.printStackTrace();
        }
    return modelo;
}



lo saque y puse lo que me sugeriste :

Código:
public DefaultTableModel agregarFila(DefaultTableModel modelo) throws SQLException {
            Conexion conn = new Conexion();
    Statement sf = conn.getConnection().createStatement();
    String cadena = "Select * from Cliente";
    ResultSet rs = sf.executeQuery(cadena);
    System.out.println(cadena);
ResultSetMetaData rsMd = rs.getMetaData();
int CantidadColumnas = rsMd.getColumnCount();

Object datos[]=new Object[CantidadColumnas];
        try {
while(rs.next()) {
             datos[0] =(String) ((ResultSet) rsMd).getString("Codigo");
             datos[1] =(String) ((ResultSet) rsMd).getString("Nombre");
             datos[2] =(String) ((ResultSet) rsMd).getString("Apellido");
             // asi con las demas propiedades. El casting de acuerdo al tipo de dato
             if(rs.next()=null) { modelo.addRow(datos); } // si ya no hay filas en la tabla se inserta la fila en la JTable
        }
       
        for(Object e : datos) {
        System.out.println("Valor:"+e+"\tTipo de dato: "+e.getClass().getName());
        }
       
            rs.close();
        } catch (Exception e) {
        e.printStackTrace();
        }
    return modelo;
}


tengo el problema que el if(rs.next()=null) { modelo.addRow(datos); } no puedo igualarlo me dice que no es un argumento recibido == para tipos boolean.


Espero me puedas ayudar para poder terminar este tema, ah para probar cree un botón en mi clase formulario y le puse el refrescarDatos y me actualiza la lista -.- osea nose xq no sale así automático...espero tu respuesta amigo saludos.

Te comento que estoy trabajando con JAVA y oracle saludos.
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: JAVA Como Refrescar JTable
« Respuesta #13 en: 20 Marzo 2014, 15:25 pm »

Saca esa línea, tiene que quedarte así:

Código
  1. while(rs.next()) {
  2. // asignas los datos al array data con sus castings respectivos
  3. modelo.addRow(data);
  4. }
  5.  
  6. for(Object e : data) {
  7. System.out.println("Valor: "+e+"\tTipo de dato: "+e.getClass().getName());
  8. }

NOTA: Los flujos se cierran siempre en un finally, ya que así ocurra una excepción nos aseguramos que la conexión se haya cerrado.

Código
  1. try {
  2. // conexion a db y demas
  3. } catch(SQLException ex) { throw ex; }
  4. finally { if(conexion != null) conexion.close(); }

Pega lo que imprime, para saber si se está guardando la información de la tabla en el array con su correspondiente tipo de dato. Salu2.

PD: Si le pasas por parámetro el modelo de la tabla, ¿para qué la devuelves nuevamente? ¿Estás haciendo algo así no?

Código
  1. JTable tblDatos = new JTable();
  2. modelo = agregarFila(modelo);
  3. tblDatos.setModel(modelo);

Pero no sería necesario. Acuérdate que en Java el paso es por referencia (tipo punteros en C++), por lo que solamente bastaría con un agregarFila(modelo); y el cambio se reflejaría en el modelo. Ej.:

Código
  1. JTable tblDatos = new JTable(modelo);
  2. // aqui el paso es por referencia por lo que solo basta hacer esto
  3. this.agregarFila(modelo); // y se agrega la fila al modelo.
« Última modificación: 20 Marzo 2014, 15:50 pm por Mitsu » En línea

MiguelP

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: JAVA Como Refrescar JTable
« Respuesta #14 en: 20 Marzo 2014, 17:49 pm »

Hola Mitsu llegue a resolver mi problema de la siguiente manera:

En mi clase formulario herede los botones de mi clase JDialog y ahí hice lo siguiente :

Código:
 jd.getBtnAceptarC().addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {

((DefaultTableModel) tablabd.getModel()).addRow(new Object[]           {jd.ListaCaja.get(0).getText(),jd.ListaCaja.get(1).getText(),jd.ListaCaja.get(2).getText()});   
}
});


Es decir cada vez que hago un insert agrego una fila con los campos ingresados en mi JDialog y los pega en el JTable con esto puedo salir del problema.

Te agradezco por toda la ayuda y estaré en contacto para próximas dudas saludos.
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: JAVA Como Refrescar JTable
« Respuesta #15 en: 20 Marzo 2014, 17:54 pm »

Listo, me alegra que se haya solucionado tu problema. Por eso te decía, que primero siempre se agrega el modelo a la JTable y recién se empieza a agregar datos. Cualquier duda, puedes postearla en ElHacker.net que seguro te apoyaremos.

Como última recomendación, te invito a que investigues sobre buenas prácticas de programación, cómo trabajar con bases de datos y patrones de diseño. Con ésto, tendrás un código muy limpio y entendible. Recuerda además, comentar siempre tus códigos, así cuando otro lo vean, sepan qué hace el código y no se pierda intentando decifrarlo.

Un saludo amigo.

PD: Edita el tema y coloca [Solucionado] antes del tema.
« Última modificación: 20 Marzo 2014, 18:01 pm por Mitsu » En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: [Solucionado] JAVA Como Refrescar JTable
« Respuesta #16 en: 22 Marzo 2014, 21:32 pm »

Grandes respuestas, Mitsu! :)

Cierro el post!

Saludos
En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
[Solucionado] JAVA Como Refrescar JTable
« Respuesta #17 en: 22 Marzo 2014, 21:32 pm »

El mensaje '[Solucionado] JAVA Como Refrescar JTable' fue bloqueado
Tópico completamente explotado. Gracias por traernos tu duda :) Ahora otros como tú podrán beneficiarse de esta solución :)
Leer reglas:
http://foro.elhacker.net/reglas
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
{SOLUCIONADO} JTable me repite datos de un ResultSet {SOLUCIONADO}
Java
|Miguel| 4 6,271 Último mensaje 3 Marzo 2012, 19:26 pm
por Proteus1989
Refrescar JTABLE!!
Java
DarkGhetto22 6 21,254 Último mensaje 29 Noviembre 2013, 00:25 am
por viruzexe
Como refrescar los datos de un textarea sin refrescar toda la pagina.
Desarrollo Web
70N1 3 4,378 Último mensaje 1 Mayo 2012, 08:02 am
por Graphixx
Cómo seleccionar una fila de un JTable de Java
Java
soy_nicanor 5 10,216 Último mensaje 22 Enero 2015, 22:48 pm
por Usuario Invitado
¿Como hacer una resta en un jtable en java netbeans?
Java
Larry16 4 3,274 Último mensaje 3 Abril 2016, 22:31 pm
por Larry16
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines