JTable+JTextField

5 respostas
zica

Como faço para que atraves dos dados digitados em uma JTextField seleciono o dado respectivo em um JTable ?

Serio o evento KeyPress da JTextField dando um charAt() em seu conteudo ? Qual método da JTable me possibilita localizar os elementos contidos nela ?

5 Respostas

brlima

Para fazer saber quando foi alterado um caractere no textfield, adiciona um listener no Document dele. Dá uma procurada no forum sobre como implementar que tem uns topicos.

Depois de ter o cara ouvindo, para buscar o dado na JTable, nao existe nenhum método pronto: vc deve criar o seu método de busca ( e selecao ) do dado na JTable, ou melhor, no modelo dela.

flw!

zica

Eu implementei desta maneira:

No JTextField usei esse evento que sempre é chamado quando alguma digitação ocorre nele:

private void jtextfieldKeyReleased(java.awt.event.KeyEvent evt) {
        procuraTable(jtextfield.getText());        
}

O método abaixo pesquisa os dados na JTable conforme foram digitados no JTextField:

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);     
            }                        
        }      
}
brlima

mto bem :smiley:

martui

“zica”:
private void jtextfieldKeyReleased(java.awt.event.KeyEvent evt) { procuraTable(jtextfield.getText()); }

:scrambleup: Por que não usar algo como um keyTyped (pro caso de um KeyListener?

Ou ainda algo como sugerido pelo brlima:

JTextField myArea = new JTextField(); DocumentListener myListener = new DocumentListener(){ void changedUpdate(DocumentEvent e){procuraTable(myArea.getText());} void insertUpdate(DocumentEvent e){procuraTable(myArea.getText());} void removeUpdate(DocumentEvent e){procuraTable(myArea.getText());} }; myArea.getDocument().addDocumentListener(myListener);

:arrow: Eu implementei os três métodos dessa interface DocumentListener desta forma por não ter testado exatamente o changedUpdate, apesar de acreditar que ele sozinho já dá conta do recado.

zica

Corrigindo um probleminha que havia no código :

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.length() >= tamanho) && (nomeTabela.substring(0,tamanho).equals(nome))){ jtable.setRowSelectionInterval(linha,linha); } } }

Criado 10 de setembro de 2004
Ultima resposta 22 de set. de 2004
Respostas 5
Participantes 3