Author Topic: Me duplica registro en la pintada del JTable a la hora de borrar otro registro  (Read 96 times)

manuel

  • Newbie
  • *
  • Posts: 2
  • Karma: 0
    • View Profile
Hola buenas, llevo unos días con un problema un tanto extraño de resolver, la cuestión esta en el que yo tengo un botón de Borrado que me ejecuta dicho método pero el problema viene en la pintada que hace es decir cuando yo selecciono un registro del JTable y le doy a borrar me lo borra pero me duplica el ultimo registro.
Solo aparece en ese momento porque en la BD no aparece duplicado y si cierro y abro la interfaz ya no esta duplicado

1º foto metodo a implementar

2º foto donde al borrar Id 11 posteriormente me duplica el ultimo pero solo hay en la bd no aparece duplicado y si lo vuelvo a abrir tampoco

3 foto Controlador del botón

Por seguridad de los usuarios y privacidad aparecen tachados
« Last Edit: Junio 07, 2018, 05:25:01 pm by manuel »

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5443
  • Karma: 12
    • View Profile
    • Apuntes de programación
Hola:

Después de borrar mueves todas las filas que hay detrás una fila antes. Pero no "mueves", sino que copias "machacando". La última fila sigue estando porque no la borras de ninguna manera, así que sigue estando.

O rehaces el array con una fila menos, o "marcas" de alguna manera la última como que tiene datos no válidos y no deben pintarse.

Saludos.

manuel

  • Newbie
  • *
  • Posts: 2
  • Karma: 0
    • View Profile
Lo de rehacer el array te refieres al de data[][], quitarle la ultima fila

public void deleteRow (int row) {
      //List<DTO> borrarDatos = new ArrayList<>();
      Object id = getValueAt(row, 0);
      System.out.println("id a borrar: " + (int)data[row][0]);
      daoPersona.borrarDatos((int)data[row][0]);
      System.out.println("fila " + row);
      System.out.println("Nº datos " + data.length);
      for (int i = row; i < data.length - 1  ; i++) {
         System.out.println("i " + i);

         data[0] = data[i+1][0];
         data[1] = data[i+1][1];
         data[2] = data[i+1][2];
         data[3] = data[i+1][3];
         data[4] = data[i+1][4];
         data[5] = data[i+1][5];
         data[6] = data[i+1][6];
      }
      fireTableDataChanged();
   }
   

 

ey