Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Aikanáro Anário en 27 Noviembre 2011, 07:30 am



Título: Filtrar resultados de JTable que no sea Case Sensitive (ni mayus, ni minus)
Publicado por: Aikanáro Anário en 27 Noviembre 2011, 07:30 am
Lo que tengo es una tabla que se carga con los registros de una base de datos. Entonces tengo un TextField en el que pongo, por ejemplo, un nombre y va filtrando los resultados automáticamente hasta dar con el nombre correcto si se encuentra en una de las filas de la tabla.

Código
  1. public void changedUpdate(DocumentEvent arg0) {
  2. ordenador.setRowFilter(RowFilter.regexFilter(jtxtfBuscarInv.getText(), 0));
  3.  
  4. }
  5.  
  6. @Override
  7. public void insertUpdate(DocumentEvent arg0) {
  8. ordenador.setRowFilter(RowFilter.regexFilter(jtxtfBuscarInv.getText(), 0));
  9.  
  10. }
  11.  
  12. @Override
  13. public void removeUpdate(DocumentEvent arg0) {
  14. ordenador.setRowFilter(RowFilter.regexFilter(jtxtfBuscarInv.getText(), 0));
  15.  
  16. }

El problema es que es case sensitive. Y si hay un nombre que empiece con mayúsculas y lo escribo en minúsculas, pues ya no funciona.

Sé que en java están los métodos string.toLowerCase y string.toUpperCase. Pero el problema es que entonces quedaría muy antiestético, sería todo minúsculo o todo mayúsculas.

Creo que tal vez el problema es porque primero meto los datos en la tabla y apartir de ahí se filtran. Talvez si ejecuto un query por cada cambio en el textfield no pasará, pero esa forma me parece muy ineficiente....


Título: Re: Filtrar resultados de JTable que no sea Case Sensitive (ni mayus, ni minus)
Publicado por: sapito169 en 27 Noviembre 2011, 14:41 pm
. error  :-\


Título: Re: Filtrar resultados de JTable que no sea Case Sensitive (ni mayus, ni minus)
Publicado por: Aikanáro Anário en 27 Noviembre 2011, 16:47 pm
. error  :-\

EH?  :-\


Título: Re: Filtrar resultados de JTable que no sea Case Sensitive (ni mayus, ni minus)
Publicado por: Leyer en 27 Noviembre 2011, 19:10 pm
Código
  1. RowFilter<Object, Object> filter = new RowFilter<Object, Object>() {
  2.      public boolean include(Entry<?, ?> entry) {
  3.            int numberOfColumn=0;//
  4.            String value= String.valueOf(entry.getValue(numberOfColumn));
  5.       return value.equalsIgnoreCase(jtxtfBuscarInv.getText());
  6.        }
  7. };

en el metodo insertUpdate colocas

Código
  1. ordenador.setRowFilter(filter);


Título: Re: Filtrar resultados de JTable que no sea Case Sensitive (ni mayus, ni minus)
Publicado por: Aikanáro Anário en 27 Noviembre 2011, 19:21 pm
Encontré una forma más sencilla de hacerlo, es:

Código
  1. ordenador.setRowFilter(RowFilter.regexFilter("(?i)"+jtxtfBuscarInv.getText(), 0));
  2.  
Pero entonces ahora el problema son las tildes...

Además no entiendo lo que hiciste Leyer, eso es java avanzado xD.


Título: Re: Filtrar resultados de JTable que no sea Case Sensitive (ni mayus, ni minus)
Publicado por: ZedGe en 28 Noviembre 2011, 18:32 pm
Podrías hacer que lo que escriba el usuario tu lo recojas con getText lo pasas a mayúscula o minúscula como quieras, y los acentos podrías hacer un Jlabel que diga sin acentos, y que al imprimirlo en otro lado lo asemejes con acento...


EJEMPLO


Ingresa Maria
Recojes MARIA y al volver a escribir dices que MARIA = María


Podría ser una solución fácil, pero gastadora de memoria