miércoles, 24 de noviembre de 2010

FILTRAR DATOS DE UN JTABLE EN NETBEANS

Después de un largo periodo de no realizar ninguna publicación, estoy regresando recargado de experiencias y anécdotas sobre algunos proyectos en los que estuve trabajando por mas de 2 años.

En esta ocasión veremos la forma de filtrar datos de un jTable, que estoy usándolo en una aplicacion de gestión de compras, como verán no esta muy desarrollado para este tutorial, debido a que tiene fines académicos.


Tenemos un jTable con los siguientes datos, extraído de una Base de Datos (MySQL) como veremos a continuación:

Los datos que se observan en la tabla en ejecución anterior, se cargan de la tabla productos de la base de datos, pero el método de filtrado funcionaria igual con datos estáticos.

código fuente:

import Datos.ProductosDAO;
import Logica.Productos;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.List;
import javax.swing.RowFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;

public class GUIListaProductos extends javax.swing.JDialog {
//TableModel tblProd;
private TableRowSorter trsfiltro; //creamos el filtro
DefaultTableModel temp;
String filtro;
Productos Pro;
ProductosDAO prodao = new ProductosDAO();
/** Creates new form GUIListaProductos */
public GUIListaProductos(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
CargarTabla();

}

//******************************************//
public void filtro() {
//Obtiene el valor del JTextField para el filtro
filtro = txtBuscarXdesc.getText();
int columna = 3;
trsfiltro.setRowFilter(RowFilter.regexFilter(txtBuscarXdesc.getText(), columna));
}

//******************************************//

public void CargarTabla(){ // Recupera registro de la tabla de la base de datos

temp = (DefaultTableModel)tblProductos.getModel();

int cant, i;
List lstVi= prodao.getProductos();

//Recorrer el arreglo
for(i=0; i
{
Pro=lstVi.get(i); //Obtiene el Objeto de la Coleccion dado e indice
//llenar las celdas de la Tabla
Object nuevo[]= {temp.getRowCount()+1,"",""};
temp.addRow(nuevo);

temp.setValueAt(Pro.getIdproductos(), i, 1);
temp.setValueAt(Pro.getTipoproducto().getTpDescripcion(), i, 2);
temp.setValueAt(Pro.getDescripcion(), i, 3);
temp.setValueAt(Pro.getMarca(), i, 4);
temp.setValueAt(Pro.getUnidadMedida(), i, 5);
temp.setValueAt(Pro.getCapacidad(), i, 6);
temp.setValueAt(Pro.getPrecioEstimado(), i, 7);
temp.setValueAt(Pro.getStockActual(), i, 8);
temp.setValueAt(Pro.getStockMinimo(), i, 9);
temp.setValueAt(Pro.getStockMaximo();

//Comienza a filtrar desde que digita un caracter

private void txtBuscarXdescKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
txtBuscarXdesc.addKeyListener(new KeyAdapter() {
public void keyReleased(final KeyEvent e) {
filtro();
}
});
trsfiltro = new TableRowSorter(temp);
tblProductos.setRowSorter(trsfiltro);
}

Espero sus comentarios de este articulo....