Filtrar JTable Java: En artículos anteriores estudiamos como crear un modelo para nuestras JTables, así mismo como llenarlas con JPA, ahora bien caemos en cuenta que si tenemos una tabla con una cantidad de datos considerable debemos tener la posibilidad de encontrar el datos o los datos que necesitemos, es por esto que la finalidad de este articulo sera crear un filtro con el cual llegar a la información que estamos deseando a medida que escribimos nuestro criterio de búsqueda, así que empecemos:
Filtrar JTable JAVA (Buscar datos en JTable)
He creado la siguiente interfaz:
Para este ejemplo utilice el modelo por defecto de JTable, ustedes pueden crear uno pasando por aca, luego en el evento KeyTyped del JTextField:
trsfiltro = new TableRowSorter(jTable1.getModel()); jTable1.setRowSorter(trsfiltro);
Declaramos un método filtro:
public void filtro() { filtro = jTextField1.getText(); trsfiltro.setRowFilter(RowFilter.regexFilter(jTextField1.getText(), 0)); }
Hacemos los import necesarios presionando Control+Shift+i y declaramos las variables con error:
private TableRowSorter trsfiltro; String filtro;
y por ultimo para que todo cobre vida asignamos un KeyListener a nuestro JTextField (debajo de initComponents();) así:
🌟 ¡Visita Nuestra Tienda para Programadores! 🌟Descubre Códigos Fuente, Cursos, Software, Computadoras, Accesorios y Regalos Exclusivos. ¡Todo lo que necesitas para llevar tu programación al siguiente nivel!
jTextField1.addKeyListener(new KeyAdapter() { @Override public void keyReleased(final KeyEvent e) { String cadena = (jTextField1.getText()).toUpperCase(); jTextField1.setText(cadena); repaint(); filtro(); } });
Observaciones:
El numero «0» en el método filtro, hace referencia a la columna por la cual deseamos filtrar, así que si en tiempo de ejecución deseas cambiar dicho valor puedes hacerlo con un condicional según un ítem seleccionado en un JCombobox o un JRadioButton etc.
Puedes acceder al código en github de este ejemplo acá: Filtro en JTable JAVA
Súper bien funciona!, gracias !!!
Que tal, tengo una pregunta.
En el caso de que mi jtable tenga celdas vacías y quisiera que me filtre los que tenga celdas vacías.
Ejemplo: mi columna se llama Segundo apellido y en esa columna hay registros vacíos y quisiera filtrar todos los vacíos.