Filtrar datos de un jtable desde un jtextbox

Iniciado por marc85, 27 Marzo 2014, 19:44 PM

0 Miembros y 1 Visitante están viendo este tema.

marc85

Hola, deseo saber si alguien me puede dar un ejemplo de como filtrar datos de un jtable desde un jtextbox miré ejemplos pero solo filtra el primer caracter que se escribe y no el resto.

Agradezco la ayuda de antemano

1mpuls0

No entiendo.

Quieres seleccionar por ejemplo una palabra en tu jtextbox y que en tu jtable aparezcan unicamente las celdas (columnas, filas) que contengan esa palabra?.
abc

marc85

bueno tengo un field para numCK, concepto, fecha, etc, entonces de acuerdo al dato que escriba el usuario el buscara en la columna correspondiente y es ahí donde se logrará ir filtrando los registros.
Ejemplo:
el usuario digita un fecha, entonces los cheque que se hicieron en esa fecha se mostrarán y luego si digita un número de cheque de acuerdo a lo que muestre el jtable actualmente el buscará ese número, espero haberme hecho entender

Mitsu

#3
Nunca he filtrado en Swing por columna, pero si por fila. Para ésto primero tienes que poner tu JTextField en modo escucha:

Código (=java) [Seleccionar]

textField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) {
    newFilter();
  }
  public void removeUpdate(DocumentEvent e) {
    newFilter();
  }
  public void insertUpdate(DocumentEvent e) {
    newFilter();
  }

});

private void newFilter() 

    // filtro de fila / filter of row
    RowFilter<model,Object> rf = null;   
    Try 
    { 
        rf = RowFilter.regexFilter("^" + jTextField.getText(), 0);   
        // use regular expression
    } 
    catch (java.util.regex.PatternSyntaxException e) 
    { 
        return; 
    } 
    sorter.setRowFilter(rf);  // filtra la tabla / filter the table
}


Luego tienes que usar el modelo JtableRowSorter:

Código (=java) [Seleccionar]

    TableModel model = new TableModel();
     final JTable table = new JTable(model);
    final TableRowSorter<TableModel> sorter = new TableRowSorter<>(model);
    table.setRowSorter(sorter);
    JScrollPane pane = new JScrollPane(table);

eljavatar

Hola Marc. Para lo que quieres hacer seguramente tienes varios jtextfields y cada uno debe tener su propio escuchador de eventos de tal forma que se digite algo dentro de ellos se vayan filtrando los resultados en el JTable según sus respectivas columnas.

Sin embargo, en el siguiente artículo he escrito un tutorial donde explico cómo filtrar los resultados en un jtable según la columna elegida por el usuario, aunque es muy similar a lo que necesitas:

http://www.eljavatar.com/2014/04/Como-Filtrar-los-Resultados-de-una-Consulta-en-un-JTable.html

Espero que te sirva, y cualquier cosa me avisas.

Saludos

Usuario Invitado

Cita de: eljavatar en 22 Febrero 2015, 09:42 AM
Hola Marc. Para lo que quieres hacer seguramente tienes varios jtextfields y cada uno debe tener su propio escuchador de eventos de tal forma que se digite algo dentro de ellos se vayan filtrando los resultados en el JTable según sus respectivas columnas.

Sin embargo, en el siguiente artículo he escrito un tutorial donde explico cómo filtrar los resultados en un jtable según la columna elegida por el usuario, aunque es muy similar a lo que necesitas:

http://www.eljavatar.com/2014/04/Como-Filtrar-los-Resultados-de-una-Consulta-en-un-JTable.html

Espero que te sirva, y cualquier cosa me avisas.

Saludos

Gracias por querer ayudar, pero por favor no revivamos temas antiguos que tienen un 99% de haber sido resueltos. Solo fomentamos desorden.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein