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

Actualizar filas de un Default Table Model mientras se van insertando.

Estas en el tema de Actualizar filas de un Default Table Model mientras se van insertando. en el foro de Java en Foros del Web. Tengo un problema a la hora de agregar filas a un default table model y es que hasta que no acabo de ejecutar un comando ...
  #1 (permalink)  
Antiguo 07/11/2011, 05:40
 
Fecha de Ingreso: septiembre-2005
Mensajes: 17
Antigüedad: 18 años, 6 meses
Puntos: 0
Actualizar filas de un Default Table Model mientras se van insertando.

Tengo un problema a la hora de agregar filas a un default table model y es que hasta que no acabo de ejecutar un comando entero, no me actuliza todas las filas que he ido insertando.
Para simplificar he creado un código el cual se asemeja a lo que quiero.
private void Test(){
int i=0;
Thread t = new Thread();
try{
while(i<3){
t.sleep(1000);
addMsg("numero "+ i);
i++;
}
}catch (Exception ex){

}
}

public void addMsg(Object frase){
myDefaultTableModel.insertRow(0, new Object[]{frase,dateformat.format(new Date())});

}

El caso es que cuando acaba el while, me pone las 3 filas de golpe, pero necesitaría que cada vez que llamo a addMsg, me pintara la fila, como si fuera un contador en tiempo real (Mi objetivo no es un contador en tiempo real, simplemente es un ejemplo sencillo)
  #2 (permalink)  
Antiguo 07/11/2011, 07:17
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Actualizar filas de un Default Table Model mientras se van insertando.

Luego de que insertes la fila llamada al metodo fireTableChanged() del modelo de la tabla.

EDIT: Ahora que verifico bien tu código, debes hacer la llamada a la inserción dentro del Thread que creas. Si se ejecuta en el Thread del UI, va a congelar la interface hasta que termine de insertar todas las filas.

Última edición por Ronruby; 07/11/2011 a las 07:34
  #3 (permalink)  
Antiguo 07/11/2011, 07:41
 
Fecha de Ingreso: septiembre-2005
Mensajes: 17
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Actualizar filas de un Default Table Model mientras se van insertando.

El método fireTableChanged() ya lo he probado, tambien el fireDataTableChanged(), y ninguno da resultado.

Por otro lado el Thread me bloquea la aplicación 1 segundo, pero despues de un seundo inserto una fila, y no me la pinta, hasta que acaban las 3 iteraciones y me pinta las 3 filas de golpe.
  #4 (permalink)  
Antiguo 07/11/2011, 07:52
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Actualizar filas de un Default Table Model mientras se van insertando.

Es que estas ejecutando el metodo en el Thread del UI.

Haz lo siguiente:
Código Javascript:
Ver original
  1. Thread hilo = new Thread(new Runnable() {
  2.     public void run() {
  3.         try {
  4.             int i = 0;
  5.             while(i < 3) {
  6.                 Thread.sleep(1000);
  7.                 addMsg("Numero = " + i);
  8.                 i++;
  9.             }
  10.         } catch(Throwable t) {
  11.             //Do nothing
  12.         }
  13.     }
  14. });
  15. hilo.start();
  #5 (permalink)  
Antiguo 07/11/2011, 08:18
 
Fecha de Ingreso: septiembre-2005
Mensajes: 17
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Actualizar filas de un Default Table Model mientras se van insertando.

Funciona el código que me has facilitado.

Muchas gracias, pero ahora tengo otro problema relacinado con esto, tengo un objeto físico el cual comunico por TCP-IP y tiene varios método implementados, entre ellos el inicializar

addMsg("Tracker Initializing...");

try{
Trk1.initialize()
if(Trk1.initialized()){
addMsg("Tracker Initialized.");
}else{
addMsg("Error to try initialize the Tracker.");
}


}catch( TrackerException e ){
}

El caso es que quiero que escriba: Tracker Initializing...
Y una vez que haya acabado aprox 20 segundos. muestre uno de los dos mensajes del If,

sin embargo, cuando le das al boton buttoninitalize, se pone a trabajar y una vez acaba me muestra los 2 mensajes de golpe. sin embargo el primer mensaje lo hago antes de llamar al metodo initialize().

Sabes por que puede ser?

Otra pista es que este Objeto Trk1, es sincrono, ya que no se puede piser un método con otro.
  #6 (permalink)  
Antiguo 09/11/2011, 06:24
 
Fecha de Ingreso: septiembre-2005
Mensajes: 17
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Actualizar filas de un Default Table Model mientras se van insertando.

Alguien me puede echar una mano con mi último mensaje, es que no entiendo como puede pasar? Por más vueltas que le doy.

Etiquetas: default, filas, mientras, model, table
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 17:47.