jueves, 6 de agosto de 2015

Filtrar o Buscar datos en una JTable en Java

   


Hoy hoy e decidido crear este articulo donde le voy a enseñar a hacer búsquedas dinámicas en un JTable sin base de datos. La búsqueda se va a realizar por la columna que nosotros le indiquemos, Pueden ser todas o una sola.

Para lograr hacer esto nosotros usaremos un JComboBox para elegir en cual de las columnas se desea hacer la búsqueda. Como se muestra en la siguiente imagen:



Nosotros usaremos un JTextField para ingresar el dato a buscar en la columna indicada gracias al JComboBox. A este JTextField le crearemos un evento KeyTyped para que realice la búsqueda en automático a medida que vamos escribiendo, sin la necesidad de un botón buscar. Como en el siguiente ejemplo:



Pasos para realizar búsquedas en un JTable en Java:

1-Creamos una interfaz como la siguiente con ayuda de netbeans o a puro código como mas prefieran en este caso yo lo haré en netbeans:

Filtrar o Buscar datos en una JTable en Java


2-Les cambiare el nombre de variable:
  • JComboBox = comboFiltro
  • JTextField    = txtFiltro
  • JTable          = tablaListado
3-Nuestro JComboBox podrá elegir entre "Codigo, Nombre, DNI o numero de identificación", Para hacer eso nos vamos a propiedades, Model y borramos todo y los cambiamos por las alternativas que queramos que se nos desplegué.


.
4-Y por ultimo nos vamos al evento  KeyTyped de nuestro "txtFiltro" haciendo click derecho sobre el el, yendo a Events, Key, KeyTyped.



Y por fin a programar:


  • Antes de escribir el código en el evento de nuestro "txtFiltro" Creamos un método llamado filtro.
  • Y como sale error es, es por que no vemos declarado el TableRowSorter así que lo hacemos al principio.

  • Y para terminar volvemos a nuestro evento txtFiltro creado anteriormente y escribimos el codigo.


Filtrar o Buscar datos en una JTable en Java


Si quieres descargar el proyecto completo aquí esta gratis:
https://github.com/cesar10garcia2/FiltrarBuscarDatosEnUnaJTableEnJava

César GI

About César GI

Lo que me importa es poder enseñar lo poco que se, por que asi como yo aprendo leyendo gracias a las personas que comparten sus conocimiento yo tambien quiero ayudar a la comunidad en español aportando lo poco que he aprendido hasta el momento.

29 comentarios

Write comentarios
8 de octubre de 2015, 13:42 delete

Hermano muy sencillo excelente, mis felicitaciones y agradecimientos.

Reply
avatar
20 de octubre de 2015, 18:54 delete

De nada un gusto poder ayudar

Reply
avatar
Unknown
AUTHOR
15 de noviembre de 2015, 20:33 delete

Hola.. muy bueno lo que escribiste me sirvio bastante.. Pero no se si me pdrias ayudar por favor con modificar los datos de una tabla.. y que a la vez modifique en el archivo txt en donde tengo almacenado los atos

Reply
avatar
27 de noviembre de 2015, 7:46 delete

Muchisimas Gracias excelente ejemplo

Reply
avatar
27 de noviembre de 2015, 7:48 delete

a lo que entendí del código lo usa para re dibujar la tabla y filtre según los datos

Reply
avatar
juanch0
AUTHOR
11 de diciembre de 2015, 18:28 delete

Espectacular! , te quería preguntar, como se hace el recuadro negro que usas arriba? :P

Reply
avatar
26 de febrero de 2016, 7:51 delete

Amigo me podrias ayudar con un codigo, intente lo que posteaste pero no me funciona!?

Reply
avatar
26 de febrero de 2016, 7:52 delete

Amigo me podrias ayudar con un codigo, intente lo que posteaste pero no me funciona!?

Reply
avatar
Daathh
AUTHOR
16 de marzo de 2016, 9:54 delete

Hola. Esta muy bien, lo probe y ha funcionado. Solo que ahora al seleccionar la fila con esto:
int fila = table.getSelectedRow();
Siempre me selecciona la primera, osea la fila 0.
Como puedo corregir esto?
Gracias

Reply
avatar
Irving Arizpe
AUTHOR
5 de julio de 2016, 18:22 delete

hola no se si te moleste ke lo comparta a youtube con la base de datos en mysql, buen aporte amigo..

Reply
avatar
13 de julio de 2016, 10:02 delete

de donde sale el trsfiltro ... ??

Reply
avatar
Nicanor jobs
AUTHOR
10 de octubre de 2016, 17:08 delete

Por que me da error cuando Busco con:
+ o *

Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
+

Reply
avatar
Nicanor jobs
AUTHOR
10 de octubre de 2016, 17:09 delete

Cuando busco con signo MAS o ASTIRISCO me da error

Reply
avatar
for IT the
AUTHOR
28 de diciembre de 2016, 8:33 delete

I have read your blog its very attractive and impressive. I like it your blog.

Java Training in Chennai Core Java Training in Chennai Core Java Training in Chennai

Java Online Training Java Online Training Core Java 8 Training in Chennai Core java 8 online training JavaEE Training in Chennai Java EE Training in Chennai

Reply
avatar
Elías Pérez
AUTHOR
13 de enero de 2017, 11:14 delete

buenas tardes alguien sabe como hacer para que no puedan meter datos repetidos en una jtable ?? saludes gracias

Reply
avatar
pasionalvicio
AUTHOR
15 de marzo de 2017, 22:53 delete

Muchas gracias, me ayudaste bastante, el proyecto va perfecto y pude implementar algunas funciones al mio, excelente aporte, gracias por compartir tus conocimientos.

Reply
avatar
19 de agosto de 2017, 8:43 delete

Perfecto funciono tal como lo esperaba, muchas grtacias

Reply
avatar
10 de septiembre de 2017, 7:51 delete

Muchas Gracias, me super ayudo

Reply
avatar
dextre
AUTHOR
19 de septiembre de 2017, 0:13 delete

muchas gracias amigo por tu ayuda la verdad solo tome la parte de la búsqueda que haces en un JTable Java, gracias y saludos desde Lima Perú

Reply
avatar
Unknown
AUTHOR
23 de noviembre de 2017, 20:17 delete

Hola amigo, Excelente trabajo, muy bien explicado todo, me ayudaste bastante. Solo tengo una duda y quisiera saber si me puedas ayudar.
Yo tengo un producto con un nombre en la tabla (´Torrontes´ por ejemplo) y cuando lo quiero buscar, si o si debo escribir el nombre tal cual para que aparezca. Yo quisiera buscar el producto y que lo busque igual aunque no haya puesto la primer letra en mayúsculas, se podría hacer eso? no se, si exprese bien mi idea.

Reply
avatar
27 de agosto de 2018, 13:22 delete

El código falla cuando después de realizar un filtrado, eliminas un dato de la tabla. Debes advertir esa parte.

Reply
avatar