Pesquisar pelo nome

2 respostas
javolatra

Bom dia, é o seguite, eu tenho um JTable que recebe todos os clientes cadastrados na base de dados,
adcionei um fieldNome no JFrame que tem a tabela, para localizar um nome, o que eu preciso saber é
como eu faço para adcionar algumas letras no fieldNome e a tabela e eliminando os nomes que não inicia com
as letras digitas, EXP: quando eu digitar Claudio, aparecer todos os Claudio com sobrenomes diferentes
que estão cadastrados.

Obrigado.

2 Respostas

_Renatu

Faça com que o texto digitado seja armazenado num atributo do seu TableModel, e a cada alteração filtre os dados que seu JTable exibe.

Para capturar alterações no JTextField, provavelmente você usará um CaretListener, e para filtrar voce pode usar um indexOf ou contains da classe String mesmo.

Z

É por ai…

MyTableModel model = new MyTableModel();
sorter = new TableRowSorter<MyTableModel>(model);
table = new JTable(model);
table.setRowSorter(sorter);
filterText = new JTextField();
  //Quando o texto mudar, chama o new Filter
filterText.getDocument().addDocumentListener(
      new DocumentListener() {
            public void changedUpdate(DocumentEvent e) {
               newFilter();
            }
            public void insertUpdate(DocumentEvent e) {
               newFilter();
            }
            public void removeUpdate(DocumentEvent e) {
               newFilter();
            }
        });

private void newFilter() {
        RowFilter<MyTableModel, Object> rf = null;
        //Se a expressão regular não bater, não atualiza..
        try {
            rf = RowFilter.regexFilter(filterText.getText(), 0);
        } catch (java.util.regex.PatternSyntaxException e) {
            return;
        }
        sorter.setRowFilter(rf);
}
Criado 23 de novembro de 2007
Ultima resposta 23 de nov. de 2007
Respostas 2
Participantes 3