Frame y JTable. Como actualizarlo

Iniciado por jperezmonge, 22 Febrero 2012, 16:42 PM

0 Miembros y 1 Visitante están viendo este tema.

jperezmonge

Necesito que alguien me eche una mano. Resulta que tengo un ventana con un JTable de usuarios, al seleccionar un usuario le doy a un botón "asignar Perfil" y se me abre un frame con los Perfiles que le puede dar a ese usuario descartando los que ya tiene, el problema es que cuando selecciono un Perfil y le doy a aceptar consigo hacer la consulta a la base de datos pero no consigo que la ventana se actualice, alguien que me pueda ayudar?

|Miguel|

Yo tuve el mismo problema y al final utilicé un truquillo sucio y rastrero... en el evento del botón asignar perfil la última línea será un dispose(); y luego al final del evento del botón de aceptar volver a cargar el JFrame que tenga la JTable.

jperezmonge

Claro el dispose lo que hace es cerrar la ventana no? y entonces la reabro, voy a probar ahora te digo.

|Miguel|

Exacto, esa es la idea. A mi me vale porque no necesito tener la ventana anterior abierta.

jperezmonge

Es que entonces pierdo la información que tengo del usuario.

|Miguel|

Aaaaaaamigo, pensaba que la 1ª pantalla era un listado de usuarios, no que había información de uno en concreto. De todas formas, puedes hacerte un constructor para el JFrame de usuario que reciba un id de usuario y así vuelves al que estabas.

O si no, prueba a declarar el JFrame en el archivo donde está el main de la aplicación como static para poder acceder a él desde cualquier punto del programa.

jperezmonge

Ya soluciones el problema, era bastante simple si se te ocurre como solucionarlo.

Cuando llamo a la nueva ventana le paso el JTable entero, en la otra clase lo que hago es coger el modelo de este jTable y ya ingreso los datos y lo que quieras hacer, fireTableDataChanged()... y listo.

Proteus1989

Yo estoy usando un DefaultTableModel y cada vez que lo modifico hago un jTable1.setModel(model);.

Pero hay algo que no consigo hacer. Tengo un método que de forma iterativa va insertando filas en la tabla y me gustaría que fuese mostrando una a una las filas insertadas.

Lo que hace el JTable es quedarse congelado cuando empieza el método y cuando termina muestra el resultado final.
He probado con jTable1.repaint() pero nada.

Alguna solución?

|Miguel|

Usa un hilo en el bucle en el que vas insertando filas, y al final del bucle mete el método wait(X); donde x es tiempo en milisegundos.

Proteus1989

#9
Anoche mismo pensé lo mismo pero no sabia si iba a funcionar.
Lo probaré y os comento.


Funciona "bien". Se notan ciertos parpadeos, captura algunas excepciones de cola de eventos... pero por lo menos lo hace.
Gracias ;)