Oi povo,
Muitas vezes, você precisa validar algum campo, que depende do conteúdo digitado em um JTextField (ou qualquer componente que use Document). Por exemplo: Quando você solicita ao usuário a digitação de um código para que apareça a descrição de um produto na tela.
Muita gente usa o KeyListener pra isso, mas ele é disparado antes do caracter ser colocado no JTextField, daí ele não pega o texto digitado por inteiro.
A solução pra isso é usar o bom e velho DocumentListener! \o/
Exemplo: busca produto pelo código digitado
JTextField textField = new JTextField();
textField.getDocument().addDocumentListener(new DocumentListener(){
public void changedUpdate(javax.swing.event.DocumentEvent e) {
// Anuncie aqui! Viu como funciona?
}
public void insertUpdate(DocumentEvent e) {
buscaProdutoPorCodigo(textField.getText());
}
public void removeUpdate(DocumentEvent e) {
buscaProdutoPorCodigo(textField.getText());
}
public void buscaProdutoPorCodigo(String codigoStr){
try{
int codigo = Integer.parseInt(codigoStr);
// busca o produto no banco;
// pega o produto e exibe no lugar certo;
} catch (NumberFormatException nfex) {
// exibe mensagem dizendo que o código é inválido.
}
}
});
Explicando:
O DocumentListener é um listener disparado toda vez que o texto do componente é alterado. Daí tem 3 métodos que tem q ser implementados: O insert, o changed e o remove.
O insert é disparado quando algum texto é inserido no componente.
O remove é disparado quando algum texto é removido do componente.
E o changed só é disparado quando o estilo do texto muda (isso só é aplicável com componentes que implementam StyledDocument, como o JTextPane. Não é aplicável ao JTextField, portanto ali no código ele tá só fazendo figuração =D ).
Té mais, povo o/