Dúvida pesquisar em JTable já carregado!

Bom dia pessoal, como eu fasso para pesquisar em um JTable já carregado com todos os registros na medida que eu vou digitando?
Por exemplo: assim quando eu abro a minha aplicação esse Jtable já vem carregado com todos os registros, desta forma não se tem necessidade de realizar uma nova
consulta no banco, basta apenas ir localizando de acordo com o que for digitado.

Aqui é a minha classe

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package gui.consultas;

import banco.Conexao;
import gui.layout.AJDialog;
import gui.layout.AJTable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.table.DefaultTableModel;

/**
*

  • @author JOHN LENO
    */
    public final class ConsultaGrupoProduto extends AConsulta{

    private JTextField tf_codGrupoProduto;
    private ArrayList<Object[]> gruposList;

    private Object[][] carregarGruposProduto() {
    gruposList = new ArrayList<>();

     try {
         PreparedStatement pstmt = Conexao.getConexao().prepareStatement(QUERY_102);
         ResultSet rs = pstmt.executeQuery();
    
         while (rs.next()) {
             Object[] object = new Object[2];
    
             object[0] = rs.getString("grp_cd");
             object[1] = rs.getString("grp_nm");
    
             gruposList.add(object);
         }
     } catch (SQLException ex) {
     }
    
     Object[][] gruposArray = new Object[gruposList.size()][2];
     gruposArray = gruposList.toArray(gruposArray);
    
     return gruposArray;
    

    }

    @Override
    public void inicializarComponentes() {

    }

    @Override
    public void inserirPropriedadesComponentes() {
    String[] columnIdentifiers = {“Código”, “Descrição”};
    DefaultTableModel model = (DefaultTableModel) jt.getModel();
    model.setDataVector(carregarGruposProduto(), columnIdentifiers);
    jt.setAutoResizeMode(AJTable.AUTO_RESIZE_OFF);
    jt.getColumnModel().getColumn(0).setPreferredWidth(70);//Especifica o tamanho da coluna
    jt.getColumnModel().getColumn(1).setPreferredWidth(278);

    // jt.setFillsViewportHeight(true);
    
     /*
      * Listeners.
      */
     jt.addMouseListener(
             new MouseListener() {
                 @Override
                 public void mouseClicked(MouseEvent e) {
                     if (e.getClickCount() == 2) {
                         tf_codGrupoProduto.setText(jt.getValueAt(jt.getSelectedRow(), 0).toString());
                         ConsultaGrupoProduto.this.dispose();
                         tf_codGrupoProduto.requestFocus();
                     }
                 }
    
                 @Override
                 public void mousePressed(MouseEvent e) {
                     tf_codGrupoProduto.requestFocus();
                 }
    
                 @Override
                 public void mouseReleased(MouseEvent e) {
                     tf_codGrupoProduto.requestFocus();
                 }
    
                 @Override
                 public void mouseEntered(MouseEvent e) {
                     tf_codGrupoProduto.requestFocus();
                 }
    
                 @Override
                 public void mouseExited(MouseEvent e) {
                     tf_codGrupoProduto.requestFocus();
                 }
             });
     jb1.addActionListener(
             new ActionListener() {
                 @Override
                 public void actionPerformed(ActionEvent e) {
                     if (jt.getSelectedRow() != -1) {
                         tf_codGrupoProduto.setText(jt.getValueAt(jt.getSelectedRow(), 0).toString());
                         ConsultaGrupoProduto.this.dispose();
                     }
                 }
             });
     jb2.addActionListener(
             new ActionListener() {
                 @Override
                 public void actionPerformed(ActionEvent e) {
                     ConsultaGrupoProduto.this.dispose();
                 }
             });
    
    
     /*
      * Código para modificar o key binding para tecla ENTER.
      */
     Action enter = new AbstractAction() {
         @Override
         public void actionPerformed(ActionEvent e) {
             tf_codGrupoProduto.setText(jt.getValueAt(jt.getSelectedRow(), 0).toString());
            // ConsultaGrupos.this.dispose();
         }
     };
     jt.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
             KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "ENTER");
     jt.getActionMap().put("ENTER", enter);
    

    }

    @Override
    public void inserirComponentes() {

    }

    public ConsultaGrupoProduto(AJDialog owner, JTextField tf_codGrupoProduto){
    super(owner);
    this.tf_codGrupoProduto = tf_codGrupoProduto;
    this.setTitle(“Consulta Grupo de Produtos”);
    this.setSize(400, 265);
    this.setLocationRelativeTo(null);

     inicializarComponentes();
     inserirPropriedadesComponentes();
     inserirComponentes();
    
     this.setVisible(true);
    

    }

}
[/code]

Olhe a imagem da tela aê :

http://img141.imageshack.us/img141/3562/apollowh.png

Acho que este link irá te ajudar.

Beleza vou da uma olhada!

Não consegui implementar :confused:
Alguem ajuda?