Test Foro de elhacker.net SMF 2.1

Programación => Programación General => 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 (java) [Seleccionar]
public void changedUpdate(DocumentEvent arg0) {
ordenador.setRowFilter(RowFilter.regexFilter(jtxtfBuscarInv.getText(), 0));

}

@Override
public void insertUpdate(DocumentEvent arg0) {
ordenador.setRowFilter(RowFilter.regexFilter(jtxtfBuscarInv.getText(), 0));

}

@Override
public void removeUpdate(DocumentEvent arg0) {
ordenador.setRowFilter(RowFilter.regexFilter(jtxtfBuscarInv.getText(), 0));

}


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
Cita de: sapito169 en 27 Noviembre 2011, 14:41 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 (java) [Seleccionar]
RowFilter<Object, Object> filter = new RowFilter<Object, Object>() {
      public boolean include(Entry<?, ?> entry) {
            int numberOfColumn=0;//
            String value= String.valueOf(entry.getValue(numberOfColumn));
       return value.equalsIgnoreCase(jtxtfBuscarInv.getText());
        }
};


en el metodo insertUpdate colocas

Código (java) [Seleccionar]
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 (java) [Seleccionar]

ordenador.setRowFilter(RowFilter.regexFilter("(?i)"+jtxtfBuscarInv.getText(), 0));

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