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:

[cc lang=»java»]
public void filtro() {
trsfiltro.setRowFilter(RowFilter.regexFilter(jTextField1.getText(), 1));
}
[/cc]

Nos dará error en trsfiltro así que lo declaramos al inicio de la clase
[cc lang=»java»]
private TableRowSorter trsfiltro;
[/cc]

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

[cc lang=»java»]
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);
[/cc]

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 ejecución la columna por cual filtrar recuerden que pueden usar un JComboBox (Filtrar JTable Java); 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!.

12 comentario en “JAVA Filtrar JTable | Buscar datos en JTable NetBeans | Filtro en JTable”
  1. cómo hago que luego de filtrar la tabla y presione por ejemplo una determinada tecla, vuelva a mostrar todos los valores de la tabla antes de que haya sido filtrada?

  2. Yo en una ocasión vi en vBasic un control que arriba de los encabezados de columna de la tabla había un cuadro de búsqueda así que te posicionabas con tabulador o flechas de dirección arriba de la columna que querías filtrar y te filtraba la información de acuerdo a lo que escribías. No sabes si hay algún control así para java. Otra seria simularlo o con el combo elegir la columna de filtrado pero es menos ágil.

    1. Hola, gracias por participar. para Java no he visto un componente o una librería que disponga un control como el que dices, pero si puedes colocar una sola caja de texto que te filtre en todas las columnas, de esa forma abarcarías una buena funcionalidad.
      Saludos!.

  3. Genial, ideal ejemplo de búsqueda filtrada, llevaba días buscando una solución al tema ya que necesitaba implementarlo en una aplicación.

    Saludos y espero más tutoriales tuyos 🙂

  4. Amigo me da error en la linea donde esta repaint(); que podra ser??

  5. habrá alguna forma de buscar sin usar jtextfield. es decir… me posiciono en cualquier fila y si digito la letra «g» por ejemplo, se vaya automaticamente a «gustavo» , claro está… en un jtable ordenado alfabetamente??? alguna idea??? esto se puede con un jlist, pero lo he intentado en jtable y nada q funciona

  6. Hola habrá una forma de filtrar datos vacíos, me refiero que si en una columna X existen datos vacíos y quisiera filtrarlos como se podría hacer?.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

×