Autor Tema: ayuda con JTable  (Leído 10165 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado fran

  • Sv Jr.
  • **
  • Mensajes: 53
  • Larga vida al Rock
ayuda con JTable
« : enero 04, 2009, 02:29:43 pm »

Hola alguien puede ayudarme necesito remover los datos de la JTable pero no me los   remueve todos  yo utulizo esto

          for (int i=0; i<=dtm.getRowCount(); i++)
           {
                  dtm.removeRow(tabla.getRowCount()-1);
         }
alguien que conosca algun metodo o algo que me pueda servir.  gracias de antemano :thumbsup:
Hasta la Victoria

Desconectado fran

  • Sv Jr.
  • **
  • Mensajes: 53
  • Larga vida al Rock
Re: ayuda con JTable
« Respuesta #1 : enero 05, 2009, 09:45:57 am »

    Hola o alguien sabe como actualizar los datos de la jtable :-/
Hasta la Victoria

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: ayuda con JTable
« Respuesta #2 : enero 05, 2009, 10:06:39 am »
Hola alguien puede ayudarme necesito remover los datos de la JTable pero no me los   remueve todos  yo utulizo esto

          for (int i=0; i<=dtm.getRowCount(); i++)
           {
                  dtm.removeRow(tabla.getRowCount()-1);
         }
alguien que conosca algun metodo o algo que me pueda servir.  gracias de antemano :thumbsup:

Ok mira, el problema es que en Java, una cosa es el elemento grafico (en este caso el JTable) y otra cosa son los datos de los cuales se alimenta.

¿Como has inicializado tu tabla? La inicializaste con un vector? O creaste un TableModel para la misma.

Si inicializaste la tabla con un vector, para eliminar datos de la tabla tenes que eliminarlos del vector. Si lo que hiciste fue crear un TableModel, entonces tenes que crear en tu tablemodel una funcion que se encargue de borrar los datos.

Dime como inicializaste tu tabla y te dire como borrar las filas.



Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14587
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re: ayuda con JTable
« Respuesta #3 : enero 05, 2009, 10:26:36 am »
nombre el problema es sencillo, el código lo dice todo, el pex es que está borrando la primera columna, pero de ahi te pasas a la "siguiente" el problema es q la q vas a borrar ya se movió una posición hacia arriba porq borraste la anterior  :thumbsup:

PRO TIP: borrá de abajo hacia arriba.

ah y creo q es necesiario un revalidate

Desconectado fran

  • Sv Jr.
  • **
  • Mensajes: 53
  • Larga vida al Rock
Re: ayuda con JTable
« Respuesta #4 : enero 05, 2009, 10:56:34 am »
mira estoy utilizando
cree un DefaultTableModel.
hiciste fue crear un TableModel, entonces tenes que crear en tu tablemodel una funcion que se encargue de borrar los datos.
es que los datos los obtengo de una base de datos y necesito removerlos para luego meter otros  datos a la tabla
Hasta la Victoria

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: ayuda con JTable
« Respuesta #5 : enero 05, 2009, 11:07:07 am »
mira estoy utilizando  es que los datos los obtengo de una base de datos y necesito removerlos para luego meter otros  datos a la tabla

Tenes el codigo a la mano?... me imagino que lo que queres hacer es simplemente actualizar los datos que se muestran verdad?


Desconectado fran

  • Sv Jr.
  • **
  • Mensajes: 53
  • Larga vida al Rock
Re: ayuda con JTable
« Respuesta #6 : enero 05, 2009, 11:18:53 am »
Tenes el codigo a la mano?... me imagino que lo que queres hacer es simplemente actualizar los datos que se muestran verdad?
si a si es, la verdad es que tengo dos radio button al precionar el primero me tiene que tirar unos datos, igual con el otro boton pero con diferentes datos
Hasta la Victoria

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: ayuda con JTable
« Respuesta #7 : enero 05, 2009, 11:27:06 am »
si a si es, la verdad es que tengo dos radio button al precionar el primero me tiene que tirar unos datos, igual con el otro boton pero con diferentes datos

OK vaya! peganos el codigo que usas para llenar la tabla cuando presionas el primer boton. El JTable va a llenar con los datos que le pongas. No deberia ser necesario que limpies la tabla. Al cambiar la fuente de datos deberia de cambiarte lo que se muestra dentro de la tabla.


Desconectado fran

  • Sv Jr.
  • **
  • Mensajes: 53
  • Larga vida al Rock
Re: ayuda con JTable
« Respuesta #8 : enero 05, 2009, 11:50:20 am »
OK vaya! peganos el codigo que usas para llenar la tabla cuando presionas el primer boton. El JTable va a llenar con los datos que le pongas. No deberia ser necesario que limpies la tabla. Al cambiar la fuente de datos deberia de cambiarte lo que se muestra dentro de la tabla.
mira la verdad es que me los coloca despues de los que estan en la tabla (se unen todos) al poner esto
    for (int i=0; i<=dtm.getRowCount(); i++)
           {
                  dtm.removeRow(tabla.getRowCount()-1);
         }
me borra algunos datos pero no todos y los que quedan se unen con los nuevos.
habra algun metodo en particular para esto.?
Hasta la Victoria

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: ayuda con JTable
« Respuesta #9 : enero 05, 2009, 11:55:10 am »
mira la verdad es que me los coloca despues de los que estan en la tabla (se unen todos) al poner esto
    for (int i=0; i<=dtm.getRowCount(); i++)
           {
                  dtm.removeRow(tabla.getRowCount()-1);
         }
me borra algunos datos pero no todos y los que quedan se unen con los nuevos.
habra algun metodo en particular para esto.?

Mira, no te borra los datos por lo que te dijeron arriba. Perooo... quiero ver como estas llenando la tabla para decirte si existe otra forma más facil y más adecuada de hacerlo.


Desconectado fran

  • Sv Jr.
  • **
  • Mensajes: 53
  • Larga vida al Rock
Re: ayuda con JTable
« Respuesta #10 : enero 05, 2009, 12:08:36 pm »
mira yo lo hago asi. hago la conexion y extraigo los datos asi
while(rs1.next()){               
                   data[0]=(rs1.getString(2));
                  data[1]=(rs1.getString(5));
                  dtm.addRow(data);
                    }
claro que cuando preciono la otra opcion el resulset es otro por lo tanto cambia
Hasta la Victoria

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: ayuda con JTable
« Respuesta #11 : enero 05, 2009, 12:19:12 pm »
mira yo lo hago asi. hago la conexion y extraigo los datos asi
while(rs1.next()){               
                   data[0]=(rs1.getString(2));
                  data[1]=(rs1.getString(5));
                  dtm.addRow(data);
                    }
claro que cuando preciono la otra opcion el resulset es otro por lo tanto cambia

Ok mira.. Como lo estas haciendo funciona, pero no es la mejor manera de trabajar con tablas en Java.

¿Por qué? Bueno, lo que te dije arriba, en Java la idea con las tablas es que el JTable sea únicamente el medio de "visualización", y el TableModel sea la interfaz que se comunica con los datos.

Tu problema en particular lo podes solventar justo como dijo g00mba con el siguiente código:

Código: [Seleccionar]
for (int i=0; i<dtm.getRowCount(); i++)
{
    dtm.removeRow(0);
}

Este es uno de los casos que yo no recomendaria usar un ciclo FOR, porque hace dificil entender que es lo que hace el algoritmo.. talvez se entienda mejor con un while:

Código: [Seleccionar]
while(dtm.getRowCount()>0) {
    dtm.removeRow(0);
}

El DefaultTableModel almacena las filas internamente en un vector. Cada vez que quites un elemento se ira reduciendo la cantidad de filas hasta que el contador llegue a cero. Una vez llegue a cero no intentará seguir eliminado más filas. Si te fijas solo elimino el primer elemento, ya que si eliminara posición por posición tendría que tener un contador para saber que elemento es el que estoy eliminando.


Para tu caso estas utilizando el DefaultTableModel, que posee la funcion "removeRow". Ten cuidado, que no estamos hablando del JTable.

La lógica es más o menos así:


[JTable]  --- despliega la informacion que obtiene de ---> [DefaultTableModel] --- que almacena los datos en un ---> [Vector]

Si te fijas en el nombre de la variable "dtm", veras que se refiere a "DefaultTableModel" y no al JTable. Una tabla no puede ser modificada directamente. Lo que modificas es el modelo de datos.

Esto es un poquito dificil de comprender al principio, pero es importante que sepas que estas eliminando los datos del modelo de la tabla, y no del elemento grafico JTable.
« Última Modificación: enero 05, 2009, 12:26:06 pm por mxgxw »


Desconectado fran

  • Sv Jr.
  • **
  • Mensajes: 53
  • Larga vida al Rock
Re: ayuda con JTable
« Respuesta #12 : enero 05, 2009, 12:38:49 pm »
  ok si me funciona con el while a la perfeccion como queria

         while(dtm.getRowCount()>0) {
                  dtm.removeRow(0);
               }
         gracias mxgxw por la ayuda :sur:
Hasta la Victoria