{"id":1562,"date":"2016-08-17T10:03:00","date_gmt":"2016-08-17T15:03:00","guid":{"rendered":"http:\/\/linuxitos.com\/main\/filtrar-datos-de-un-jtable-a-partir-de-una-busqueda-en-jtextfield\/"},"modified":"2016-08-17T10:03:00","modified_gmt":"2016-08-17T15:03:00","slug":"filtrar-datos-de-un-jtable-a-partir-de-una-busqueda-en-jtextfield","status":"publish","type":"post","link":"https:\/\/linuxitos.com\/main\/filtrar-datos-de-un-jtable-a-partir-de-una-busqueda-en-jtextfield\/","title":{"rendered":"Filtrar datos de un jTable a partir de una b\u00fasqueda en JTextField"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align: left;\">\n<div style=\"clear: both; text-align: center;\"><a href=\"https:\/\/3.bp.blogspot.com\/-PFfNCKv_EjM\/V7R1zMZC36I\/AAAAAAAADO4\/-jwufla4_g8iPvigcKtW4Tue55ac4hZDQCLcB\/s1600\/Captura%2Bde%2Bpantalla%2Bde%2B2016-08-17%2B09-31-49.png\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" height=\"380\" src=\"https:\/\/3.bp.blogspot.com\/-PFfNCKv_EjM\/V7R1zMZC36I\/AAAAAAAADO4\/-jwufla4_g8iPvigcKtW4Tue55ac4hZDQCLcB\/s640\/Captura%2Bde%2Bpantalla%2Bde%2B2016-08-17%2B09-31-49.png\" width=\"640\" \/><\/a><\/div>\n<p><\/p>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\">Una de las acciones indispensables en un sistema inform\u00e1tico, son si duda las b\u00fasquedas. Las b\u00fasquedas de registros implica presentar al usuario la informaci\u00f3n que necesita y hacerlo de la manera m\u00e1s f\u00e1cil para el usuario.<\/span><\/div>\n<p><span style=\"font-size: large;\"><br \/><\/span><\/p>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\">En lo personal me gusta a\u00f1adir el m\u00e9todo de ir filtrando la informaci\u00f3n de una tabla mientras el usuario escribe y as\u00ed se va viendo la informaci\u00f3n aproximada de lo que el usuario est\u00e1 buscando.<\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\"><br \/><\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\">Para hacer esto distingo dos opciones:<\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\"><br \/><\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\">1.- Filtrar los datos previamente cargados en la tabla.<\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\">2.- Filtrar y mostrar los datos de la tabla de acuerdo a lo que haya directamente en las bases de datos de donde se toma la informaci\u00f3n visualizada en la tabla.<\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\"><br \/><\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\">Cada una de las opciones anteriores tiene sus ventajas y desventajas, la principal ventaja de la opci\u00f3n 1, es que los datos se mostrar\u00e1n relativamente m\u00e1s r\u00e1pido ya que la informaci\u00f3n ya est\u00e1 en la tabla, su principal desventaja es, que si hay cambios en la base de datos, esos registros no se mostrar\u00e1n. En la opci\u00f3n dos, la ventaja principal es que los registros mostrados en la tabla est\u00e1n actualizados ya que se toman directo de la base de datos, desventaja principal, suponiendo que haya muchos registros, cada b\u00fasqueda se tardar\u00e1 para ir a la base de datos.<\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\"><br \/><\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\">Ahora, el c\u00f3digo para filtrar los datos solamente de la tabla es el siguiente:<\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\">Primero se crea el siguiente m\u00e9todo:<\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\"><br \/><\/span><\/div>\n<pre style=\"background: url(&quot;assets\/shadow.png&quot;) 50% 100% repeat-x whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-shadow: rgb(204, 204, 204) 0px 0px 3px; box-sizing: border-box; font-stretch: normal; margin-bottom: 10px; max-width: 100%; outline: 0px; overflow: auto; padding: 9.5px; tab-size: 4; text-shadow: rgb(255, 255, 255) 0px 1px 0px; vertical-align: baseline; word-break: break-all; word-wrap: break-word;\"><span style=\"border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\"><span style=\"border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\"><span style=\"border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\"><span style=\"color: #333333;\"><span style=\"font-size: 15px; line-height: 18.5714px; white-space: pre-wrap;\"><span style=\"font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;consolas&quot; , &quot;courier new&quot; , monospace;\">\/* declarar la siguiente variable en la clase*\/<br \/>DefaultTableModel dm;<\/span><br \/><\/span><\/span><span style=\"color: #333333;\"><span style=\"font-size: 15px; font-style: inherit; font-weight: inherit; line-height: 18.5714px; white-space: pre-wrap;\"><br \/>\/* M\u00e9todo filtro*\/<br \/><\/span><span style=\"font-size: 15px; line-height: 18.5714px; white-space: pre-wrap;\">private void filtro(String consulta, JTable jtableBuscar){<br \/>        dm = (DefaultTableModel) jtableBuscar.getModel();<br \/>        TableRowSorter&lt;DefaultTableModel&gt; tr = new TableRowSorter&lt;&gt;(dm);<br \/>        jtableBuscar.setRowSorter(tr);<br \/>        tr.setRowFilter(RowFilter.regexFilter(consulta));<br \/>}<\/span><span style=\"font-size: 15px; font-style: inherit; font-weight: inherit; line-height: 18.5714px; white-space: pre-wrap;\"><br \/><\/span><\/span><\/span><\/span><\/span><\/pre>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\"><br \/><\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\">Para invocar al m\u00e9todo, se debe hacerlo en el evento &lt;key released&gt; del JTextField utilizado para buscar registros y se invoca de la siguiente manera:<\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\"><br \/><\/span><\/div>\n<pre style=\"background: url(&quot;assets\/shadow.png&quot;) 50% 100% repeat-x whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-shadow: rgb(204, 204, 204) 0px 0px 3px; box-sizing: border-box; font-stretch: normal; margin-bottom: 10px; max-width: 100%; outline: 0px; overflow: auto; padding: 9.5px; tab-size: 4; text-shadow: rgb(255, 255, 255) 0px 1px 0px; vertical-align: baseline; word-break: break-all; word-wrap: break-word;\"><span style=\"border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\"><span style=\"border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\"><span style=\"border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\"><span style=\"color: #333333;\"><span style=\"font-size: 15px; line-height: 18.5714px; white-space: pre-wrap;\"><span style=\"font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;consolas&quot; , &quot;courier new&quot; , monospace;\">\/*A \u00e9ste m\u00e9todo se le env\u00eda el texto a buscar obtenido del JTextField, considerar si es necesario estandarizar a may\u00fasculas o min\u00fasculas, adem\u00e1s se env\u00eda la tabla en la que se desea que se realice el filtro, de este modo el m\u00e9todo se puede reutilizar en diferentes tablas*\/<br \/><\/span><\/span><\/span><span style=\"color: #333333;\"><span style=\"font-size: 15px; line-height: 18.5714px; white-space: pre-wrap;\">filtro(jtxtBuscarNombre.getText().toUpperCase(), jtableConsultas);<\/span><span style=\"font-size: 15px; font-style: inherit; font-weight: inherit; line-height: 18.5714px; white-space: pre-wrap;\"><br \/><\/span><\/span><\/span><\/span><\/span><\/pre>\n<div><span style=\"border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\"><span style=\"border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\"><span style=\"border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\"><span style=\"color: #333333;\"><span style=\"font-size: 15px; line-height: 18.5714px; white-space: pre-wrap;\"><br \/><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\">El m\u00e9todo de filtrar las filas del JTable que coincidan con lo que se est\u00e9 escribiendo obtenido directamente desde la base de datos, es un poco m\u00e1s extenso, tanto en c\u00f3digo como en explicaci\u00f3n.<\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\"><br \/><\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\">No lo explicar\u00e9, mejor pueden descargar el ejemplo completo de github para que lo puedan probar.<\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\"><br \/><\/span><\/div>\n<div style=\"text-align: center;\"><a href=\"https:\/\/github.com\/jesusferm\/Black-List-MySQL\" target=\"_blank\"><span style=\"font-size: x-large;\">Proyecto Mysql con Java<\/span><\/a><\/div>\n<div style=\"text-align: center;\"><\/div>\n<div style=\"text-align: center;\"><span style=\"font-size: x-large;\"><a href=\"https:\/\/github.com\/jesusferm\/BlackList-PostgreSQL\" target=\"_blank\">Proyecto con Postgresql con Java<\/a><\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\"><br \/><\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-size: large;\"><br \/><\/span><\/div>\n<div style=\"text-align: center;\"><span style=\"font-size: large;\">Gracias por visitar.<\/span><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Una de las acciones indispensables en un sistema inform\u00e1tico, son si duda las b\u00fasquedas. Las b\u00fasquedas de registros implica presentar al usuario la informaci\u00f3n que necesita y hacerlo de la manera m\u00e1s f\u00e1cil para el usuario. En lo personal me gusta a\u00f1adir el m\u00e9todo de ir filtrando la informaci\u00f3n de una tabla mientras el usuario [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[448,445,447,446,449],"tags":[],"class_list":["post-1562","post","type-post","status-publish","format-standard","hentry","category-filtrar-datos","category-filtrar-filas-de-una-tabla-mientras-se-escribe-en-un-jtextfield","category-filtre-rows-jtable-in-java","category-java","category-jtable"],"_links":{"self":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/1562","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/comments?post=1562"}],"version-history":[{"count":0,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/1562\/revisions"}],"wp:attachment":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/media?parent=1562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/categories?post=1562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/tags?post=1562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}