Filtro em JTable - Resolvido

Pessoal, eu preciso fazer uma pesquisa de linhas de uma JTable.
Quero usar um JTextField pra fazer a pesquisa dentro da JTable, de forma que quando digitar alguma coisa no jTextField ele já selecione a linha na JTable.
A JTable está pegando resultado do banco de dados.

[code] // Minha tabela
private void Table()throws Exception {
try {
short rowNum = 0;
short colNum = 0;
rs = stmt.executeQuery(“select fil_cod, nome_fil from c_filial”);
rsmd = rs.getMetaData();
int col = rsmd.getColumnCount();
System.out.println(“No of Colums: “+col);
while(rs.next()) {
bv = new Vector();
int a;
for(a=1;a<=col;a++) {
if(flag) {
head.add(rsmd.getColumnName(a));
}
bv.add(rs.getString(a).toString()+””);
}
body.add(bv);
flag=false;
}
rs.close();
stmt.close();
con.close();
}
catch(Exception exec) {
JOptionPane.showMessageDialog(null, “Problemas na tabela.”, “Erro”, JOptionPane.ERROR_MESSAGE);
exec.printStackTrace();
}
jTable = new JTable(body, head);
jTable.setLocation(new Point(15, 118));
jTable.setBackground(new Color(204, 204, 204));
jTable.setAutoscrolls(true);
jTable.setCellSelectionEnabled(false);
jTable.setSize(new Dimension(200, 200));
jTable.setColumnSelectionAllowed(false);
jTable.setSize(new Dimension(200, 200));
jTable.getScrollableTracksViewportHeight();
}

// Meu jTextField
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setBounds(new Rectangle(5, 29, 96, 21));
}
return jTextField;
}
[/code]
Alguém tem um exemplo?

Eu tentei algo assim:

// Meu jTextField
private JTextField getJTextField(java.awt.event.KeyEvent evt) {
      if (jTextField == null) {
         jTextField = new JTextField();
         jTextField.setBounds(new Rectangle(5, 29, 96, 21));
         procuraTable(jtextfield.getText());  
      }
      return jTextField;
   }
-------------------------------------
// Classe para fazer a pesquisa na JTable
 private void procuraTable(String nome){
         int tamanho = nome.length();
         for (int linha = 0; linha<jTable.getRowCount(); linha++){
             String nomeTabela = (String)jTable.getValueAt(linha, 1);
             if (nomeTabela.substring(0,tamanho).equals(nome)){
                 jTable.setRowSelectionInterval(linha,linha);     
             }                        
         }      
 }

E também tentei assim:

	private JTextField getJTextField(java.awt.event.KeyEvent evt) {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setBounds(new Rectangle(5, 29, 96, 21));
		      DocumentListener myListener = new DocumentListener(){
			      public void changedUpdate(DocumentEvent e)
{procuraTable(jTextField.getText());}
			      public void insertUpdate(DocumentEvent e)
{procuraTable(jTextField.getText());}
			      public void removeUpdate(DocumentEvent e)
{procuraTable(jTextField.getText());}
			      };
	      jTextField.getDocument().addDocumentListener(myListener);
	    }
		return jTextField;
	}

Mas NÃO deu certo.

Dica, idéia, sugestão, exemplo…
Qualquer coisa é bem vinda :slight_smile:

Consegui… Para quem precisar, vai o código abaixo:

// Meu JButton que tem a função de fazer o filtro.
   private JButton getJButton() {
      if (jButton == null) {
         jButton = new JButton();
         jButton.setBounds(new Rectangle(102, 15, 23, 23));
         jButton.setIcon(new ImageIcon(getClass().getResource("/images/ok.png")));
         jButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    String text = jTextField.getText();
                    if (text.length() == 0) {
                      sorter.setRowFilter(null);
                    } else {
                      try {
                        sorter.setRowFilter(
                            RowFilter.regexFilter(text));
                      } catch (PatternSyntaxException pse) {
                         JOptionPane.showMessageDialog(null, "Não existe.", "Erro", JOptionPane.ERROR_MESSAGE);
                      }
                    }
                  }
                });
      }
      return jButton;
   }

// Minha JTable que faz um select no
// BD e retorna os resultados criando as tabelas com as colunas do select
final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);

   private void Table()throws Exception {
      try {
         rs = stmt.executeQuery("select XXX, XXX, XXX  from XXXXXX");
         rsmd = rs.getMetaData();
         int col  = rsmd.getColumnCount();
         while(rs.next()) {
            bv = new Vector<String>();
            int a;
            for(a=1;a<=col;a++) {
               if(flag) {
                  head.add(rsmd.getColumnName(a));
               }
               bv.add(rs.getString(a).toString()+"");
            }
            body.add(bv);
            flag=false;
            }
         rs.close();
         stmt.close();
         con.close();
      }
      catch(Exception exec) {
         JOptionPane.showMessageDialog(null, "Problemas na tabela.", "Erro", JOptionPane.ERROR_MESSAGE);
         exec.printStackTrace();
      }
      jTable = new JTable(body, head);
      jTable.setLocation(new Point(15, 118));
      jTable.setBackground(new Color(204, 204, 204));
      jTable.setAutoscrolls(true);
      jTable.setCellSelectionEnabled(false);
      jTable.setSize(new Dimension(200, 200));
      jTable.setModel(model);
      jTable.setRowSorter(sorter);
      jTable.setColumnSelectionAllowed(false);
      jTable.setSize(new Dimension(200, 200));
      jTable.getScrollableTracksViewportHeight();
      }
   }

Espero ter ajudado.

Um abraço