Cómo vaciar el contenido (las filas) de JTable

Resuelto
ajp55 Mensajes publicados 482 Estado Miembro -  
ajp55 Mensajes publicados 482 Estado Miembro -
Bonjour,
Soy principiante en Java y he escrito un programa que utiliza un JTable.
Mi JTable está contenido en un JScrollPane para permitir las barras de desplazamiento.
En la construcción, lleno los datos en el JTable haciendo
 String[] columna = {"Tour","Player"}; String[][] filas = { { "01", "02"}, { "02", "12"}, { "21", "22"}, }; JTable miTabla = new JTable(filas,columna); JScrollPane jscr = new JScrollPane (miTabla); 

Se llena bien. Después de un cierto número de ejecuciones, necesité eliminar solo las filas del JTable, pero nada. Aquí está el código:
 miTabla.removeRowSelectionInterval(0, miTabla.getRowCount() - 1); miTabla.validate(); jscr.validate(); 

No funcionó. Hice
miTabla.removeAll();
y aún así nada.

¿Alguien podría ayudarme?
Gracias de antemano por sus respuestas.
Configuración: Windows 7 / Chrome 23.0.1271.97

--
"El ordenador es un gran invento: hay tantas errores como antes, pero ya no hay nadie responsable..."

1 respuesta

  1. KX Mensajes publicados 19031 Estado Moderador 3 020
     
    Sería mejor usar un TableModel para manipular los datos:

    String[] columna = {"Tour","Player"}; String[][] filas = {{"01","02"},{"02","12"},{"21","22"}}; DefaultTableModel modelo = new DefaultTableModel(filas,columna); JTable miTabla = new JTable(modelo); modelo.addRow(new String[] {"11","10"}); // añadir una fila al final modelo.removeRow(n); // eliminar la fila 'n' modelo.setRowCount(0); // eliminar todas las filas

    --
    La confianza no excluye el control.
    0
    1. ajp55 Mensajes publicados 482 Estado Miembro 23
       
      Siempre nada. De hecho, cuando redefino un nuevo TableModel haciendo
      JTable maTable = new JTable(new DefaultTableModel(lignes, colonne);
      en ese caso funciona, porque pierde el puntero del antiguo ModelTable. *
      Gracias por tu respuesta.
      De hecho, utilizo un modelo y es una función que devuelve este modelo. Al intentar hacer como dijiste, declaré el modelo como propiedad de la clase, y al momento de vaciar las filas, hice
      model.setRowCount(0)
      , pero nada.
      Gracias.
      0
    2. KX Mensajes publicados 19031 Estado Moderador 3 020
       
      Puedes intentar una alternativa un poco fea:

      while (model.getRowCount()!=0) model.removeRow(0);

      O de manera equivalente:

      for (int n=model.getRowCount()-1; n>=0; n--) model.removeRow(n);
      0
    3. ajp55 Mensajes publicados 482 Estado Miembro 23
       
      Gracias, el
      model.setRowCount(0)
      funciona, de hecho, era necesario hacer de nuevo después de eso
      maTable.setModel(model)
      para que surta efecto.
      Gracias por tu ayuda.
      0