JAVA Filtrar JTable

En este articulo veremos como realizar búsquedas rápidas de información contenida o cargada en nuestras jtable JAVA, algo muy útil cuando se está listando mucha información y queremos llegar a un registro especifico con el menor esfuerzo posible, en el ejemplo que realizaremos tendremos una lista de personas la idea es filtrar según sus nombres,  así mismo ir cambiando las letras del campo de búsqueda de minúsculas a mayúsculas mientras se escribe con el fin de hacer ver mucho mas profesional y elegante nuestra aplicacion,  empecemos!:

Tenemos un modelo para nuestro JTABLE, el cual llenamos con información ya sea traída de una base de datos (pueden ver como aquí) o la cargamos de forma manual quedándonos así:

Filtrar JTable

Posteriormente creamos un método que llamaremos filtro:

1
2
3
public void filtro() {
trsfiltro.setRowFilter(RowFilter.regexFilter(jTextField1.getText(), 1));
}

Nos dará error en trsfiltro así que lo declaramos al inicio de la clase

1
private TableRowSorter trsfiltro;

Inmediatamente nos dirigimos al evento KeyTyped del campo de búsqueda (JTextField), con clic derecho sobre este, en el menu Events, Key, KeyTyped:

1
2
3
4
5
6
7
8
9
10
jTextField1.addKeyListener(new KeyAdapter() {
public void keyReleased(final KeyEvent e) {
String cadena = (jTextField1.getText()).toUpperCase();
jTextField1.setText(cadena);
repaint();
filtro();
}
});
trsfiltro = new TableRowSorter(jTable1.getModel());
jTable1.setRowSorter(trsfiltro);

Importamos las librerías necesarias con Control + Shift + i, o damos clic en cada sugerencia (bombillo) que netbeans nos ofrece, como pueden darse cuenta, hacemos el llamado al método filtro en el cual especificamos el numero de la columna por la cual deseamos filtrar, en nuestro caso la numero 1 ya que empieza a contarse desde el 0, siendo el 0 la primera columna, así mismo con toUpperCase hacemos el cambio de minúsculas a mayúsculas antes de empezar a filtrar y pasamos el modelo del JTable a nuestro filtro, con lo que obtenemos:

Filtrar jtable java netbeans

Si deseamos establecer en tiempo de ejecucion la columna por cual filtrar recuerden que pueden usar un JComboBox para que el usuario tenga la facilidad de escoger su forma de búsqueda, y mediante un condicional pasar el valor correspondiente a la columna con una variable, en nuestro caso desde el inicio especificamos el numero 1 que es la columna nombres.

Hasta la proxima!.