Java - Filtro en una Tabla

 
Vista:

Filtro en una Tabla

Publicado por KSD (3 intervenciones) el 21/09/2006 16:30:20
Hola!, estoy haciendo un programa de gestion de gastos en el que uso una tabla, bien, hay un campo por el que quiero filtrar los datos, es decir, por poner un ejemplo sencillo hay 3 cuentas de banco y yo quiero hacer que el usuario sea capaz de ver los movimientos sólamente de ese banco pinchando en un "boton conmutador" pero no tengo muy claro como se hace, en principio quería poner un filtro pero no se como ponerle. Alguien sabe como hacer esto?????
Si no me he explicado bien diganme en que y se lo intento explicar mejor.

.-Salu2-.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Filtro en una Tabla

Publicado por chuidiang (950 intervenciones) el 22/09/2006 09:32:43
Hola:

No hay forma sencilla, no te queda más remedio que hacerlo.

Una forma rápida de resolver tu problema consiste en tener dos modelos de tabla (DefaultTableModel o lo que sea). En uno tienes todos los datos. El otro es el que metes el JTable.
Cada vez que cambies el filtro, borras todos los elementos del DefaultTableModel que está en la tabla y luego recorres el DefaultTableModel buscando aquellos datos que pasan el filtro y añadiéndolos al de la tabla.
Quizás esta no sea la mejor forma ni la más eficiente, pero sí la más rápida de programar.

Si quieres una opción más genérica, busca en google TableFilter. Encontrarás una clase TableFilter.java que permite el filtrado genérico de tablas por el valor de la columna que quieras. El problema es que esa clase tira de otras y al final tendrás que bajarte unas cuantas y aprender a usarlas.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Filtro en una Tabla

Publicado por KSD (3 intervenciones) el 22/09/2006 09:54:05
Ya,... me temía que esta iba a ser la respuesta.... igual que con la ordenacion,.. o la hago a puro huevo usando un método de ordenacion en el modelo, o usaba el TableSorter que requiere el TableMap y que los tengo que aprender a usar,.. asique por lo que veo la solución está en "duplicar" info,.. tengo varios modelos, los actualizo todos, pero muestro en la tabla el necesario en cada momento,... en fin,.. eso es lo que había pensado pero soñaba con un.

tabla.setFilter(2,"Efectivo")
donde 2 es el numero de columna y "Efectivo" la cadena a filtrar,.. pero bueno,.. no se puede tener todo en esta vida,.. gracisa de todos modos.

.-Salu2-.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Filtro en una Tabla

Publicado por chuidiang (950 intervenciones) el 22/09/2006 13:49:36
Hola:

Otra solución más elegante sin duplicar datos es hacer lo que se llama patrón decorador.

Tienes tu DefaultTableModel con todos los datos. Este NO lo metas en el JTable.

Hazte tu propia clase TableSorter que implemente la interface TableModel. Esta clase debe tener el DefaultTableModel original (se la puedes pasar en el constructor).

Ahora sólo te queda ir implementando los métodos, pero teniendo en cuenta el filtro.

Por ejemplo, getRowCount() debe mirar en el modelo original cuantos elementos pasan el filtro y devolver ese número.

Por ejemplo, si llamana a getElementAt(fila,columna) con fila = 3, debes recorrer el modelo original hasta que encuentres el tercer elemento que pasa el filtro y devolver ese elemento.

etc, etc.

Quizás te sea algo más fácil si heredas de AbstractTableModel, pero recuerda en cualquier caso, para que funcione bien, implementar correctamente los addTableModelListener() y llamar a los fire.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar