Foro de elhacker.net

Programación => Java => Mensaje iniciado por: jperezmonge en 22 Febrero 2012, 16:42 pm



Título: Frame y JTable. Como actualizarlo
Publicado por: jperezmonge en 22 Febrero 2012, 16:42 pm
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?


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: |Miguel| en 22 Febrero 2012, 18:26 pm
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.


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: jperezmonge en 22 Febrero 2012, 19:07 pm
Claro el dispose lo que hace es cerrar la ventana no? y entonces la reabro, voy a probar ahora te digo.


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: |Miguel| en 22 Febrero 2012, 19:18 pm
Exacto, esa es la idea. A mi me vale porque no necesito tener la ventana anterior abierta.


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: jperezmonge en 22 Febrero 2012, 19:21 pm
Es que entonces pierdo la información que tengo del usuario.


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: |Miguel| en 22 Febrero 2012, 19:25 pm
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.


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: jperezmonge en 23 Febrero 2012, 13:25 pm
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.


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: Proteus1989 en 24 Febrero 2012, 03:18 am
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?


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: |Miguel| en 24 Febrero 2012, 12:27 pm
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.


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: Proteus1989 en 24 Febrero 2012, 16:51 pm
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 ;)


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: Proteus1989 en 25 Febrero 2012, 03:01 am
Me surge otro problema al que no le encuentro solución.
Desde el hilo edito el modelo y se lo asigno a la tabla y desde el mismo hilo modifico el tamaño de la columna justo después.

El problema es que entre una sentencia y otra hay refrescos del JFrame y da sensación de destellos y ves la columna moviendose.
He buscado pero no he encontrado la forma de decirle al modelo el tamaño de la columna antes de asignarselo a la tabla, para que esto no ocurra.


Alguna solución?


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: |Miguel| en 25 Febrero 2012, 12:53 pm
No sé si se podrá hacer, pero porqué no pruebas a hacer los ajustes en el tamaño etc antes de asignar el modelo a la tabla?


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: Proteus1989 en 25 Febrero 2012, 13:34 pm
Lo hago como dices. Pero para hacerlo lo hago sobre el model de la tabla

jTable1.getColumnModel().getColumn(0).setMaxWidth(25);
o
jTable1.getColumnModel().getColumn(0).setPreferredWidth(25);

Entonces al setear el nuevo modelo pierdo el tamaño del modelo anterior de columna.


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: |Miguel| en 25 Febrero 2012, 13:46 pm
puedes usar una variable para guardar el último tamaño que tuvo la columna.
De todas formas, no entiendo muy bien lo que estás intentando hacer.


Título: Re: Frame y JTable. Como actualizarlo
Publicado por: Proteus1989 en 25 Febrero 2012, 14:19 pm
Da igual xD
Gracias un así, por lo menos lo del hilo me lo solucionaste

Gracias