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.

27 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