Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/09/2018, 22:01
sgrajaleshdz
 
Fecha de Ingreso: marzo-2016
Ubicación: World Wide Web
Mensajes: 30
Antigüedad: 8 años
Puntos: 3
Pregunta Filtrar, traspasar y eliminar filas de JTable

Hola a todos, saludos desde Mexico, recurro a ustedes después de horas de estar buscando una solución a mi problema con la eliminacion de algunas filas les explico:

Tengo una primer tabla con algunos datos como los siguientes:
Nombre| Apellido
Diego | Lopez
Maria | Martinez
Ivon | Hernandez
Diego | Fernandez
Diego | Rodriguez

Tras ello en un Campo de texto ingreso una busqueda "Diego", y se realiza el filtro de los datos, posteriormente esos datos lo envio a una segunda tabla donde solo aparecen:
Diego | Lopez
Diego | Fernandez
Diego | Rodriguez

Ahora el problema es que quiero borrar de la primera tabla todas las filas que correspondan a alguien con nombre "diego", y bueno les comento que en parte lo he conseguido pero solo me elimina a 2 con ese nombre y me sigue dejando a 1:

el código para filtrar es el siguiente:
Código Java:
Ver original
  1. public void filtro() {      
  2.         Filtro.setRowFilter(RowFilter.regexFilter(busca.getText(), 0));  
  3.     }


El cual lo solicito desde el Campo de texto de busqueda:
Código Java:
Ver original
  1. private void buscaKeyTyped(java.awt.event.KeyEvent evt) {                                  
  2.         busca.addKeyListener(new KeyAdapter() {
  3.             public void keyReleased(final KeyEvent e) {
  4.                 String cadena = (busca.getText());
  5.                 busca.setText(cadena);
  6.                 repaint();
  7.                 filtro();
  8.             }
  9.         });
  10.         Filtro = new TableRowSorter(tabla1.getModel());
  11.         tabla1.setRowSorter(Filtro);

Una vez realizada la busqueda traspaso los datos a la segunda tabla con el siguiente codigo:

Código Java:
Ver original
  1. for (int i = 0; i < modelo1.getRowCount(); i++) {    
  2.         for(int c = 0; c < modelo1.getColumnCount(); c++){
  3.            
  4.             String Vector[]=new String[2];
  5.             if (modelo1.getValueAt(i, c).equals(busca.getText())) {
  6.             Vector[0]=modelo1.getValueAt(i, 0).toString();
  7.             Vector[1]=modelo1.getValueAt(i, 1).toString();
  8.             Pantalla2.modelo2.addRow(Vector);
  9.                   }
  10.             }
  11.          
  12.         }
  13.        
  14.         borrarFilasCon(busca.getText());// este metodo es con el que trato de borrar las filas con el valor que se esta buscando

El metodo que uso para borra es este:
Código Java:
Ver original
  1. public void borrarFilasCon(String nombre)
  2.  {
  3.     for (int f = 0; f < modelo1.getRowCount(); f++)
  4.     {
  5.       for(int c = 0; c < modelo1.getColumnCount(); c++)
  6.       {
  7.         if (modelo1.getValueAt(f, c).equals(nombre))
  8.            
  9.         {
  10.                        
  11.             modelo1.removeRow(f);
  12.             System.out.println(f);
  13.         } else {
  14.         }
  15.       }
  16.     }
  17.  }

Model1 es un DefaultTableModel;

Y bueno no encuentro como solucionarlo, mi problema es que al eliminar la primera fila con nombre Diego disminuye el numero de filas y ya no corresponden a lo que se eliminaria en un inicio pues las posiciones cambian...

Quedando asi:
Maria | Martinez
Ivon | Hernandez
Diego | Rodriguez


Espero puedan ayudarme y enverdad muchas gracias por prestarme de su atención
__________________
Desbloquea esos limites...

Última edición por sgrajaleshdz; 12/09/2018 a las 22:04 Razón: Error al redactar