Ola,
Bem, acredito q a solução seja muito simples, vai ver q é por isso q num to encontrando … rsss …
Tenho uma JTextField e eu quero colocar um evento q assim q ela perder o foco execute um método para verificação dos dados que foram digitados.
Como eu faço isso ?
Brigaduuuu
Adiciona um listener para o focus, exemplo:
jTextField1.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
//adicionar sua verificação aqui
JOptionPane.showMessageDialog(null, "Teste");
}
});
Silva,
Código gerado pelo Ve do Eclipse
jTextField.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent e) {
System.out.println("focusLost()"); // TODO Auto-generated Event stub focusLost()
}
});
Márcio
Demorei para puxar o gatilho
Beleza Marcio,
Até ai bele …
Mas e agora … como eu pego o valor da JTextField … para q eu possa executar o método q faz a verificação ? …
Putz … to todo colado …rsss
Esse código pega o valor que está no JTextField, por exemplo se o nome do seu JTextField é text1 vai ficar assim:
text1.getText();
Deixa eu detalhar mais… se vc quiser pegar o valor do e imprimir na tela por exemplo em uma Janela, o código vai ficar assim:
String texto = text1.getText();
System.out.println(texto);
Resolvindo pessoal … brigadão pela ajuda …
To postando aqui a parte do código pra pra verem com ficou … e vai q alguem precise deste empurrãozinho …
private JFormattedTextField getJftfCPF() {
if (jftfCPF == null) {
jftfCPF = new JFormattedTextField(setMascara("###.###.###-##"));
jftfCPF.setBounds(new Rectangle(235, 135, 103, 20));
//somente digitar numeros
jftfCPF.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent e) {
char c = e.getKeyChar();
if(!Character.isDigit(c)){
e.consume();
}
}
});
//verifica se o CPF é válido
jftfCPF.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent e) {
String cpf = jftfCPF.getText();
if ((validaCpf (cpf)))
{
// System.out.println("OK");
}
else
{
JOptionPane.showMessageDialog(null, "CPF inválido","ERROR", JOptionPane.ERROR_MESSAGE);
jftfCPF.setText("");
}
}
});
}
return jftfCPF;
}
Boa noite pessoal,
Estou precisando da ajuda de vocês aproveitando essa discussão.
Estou tentando tratar a perda do focus, e quando o tamanho do registro for menor que 10 reenvio o focus para o campo enviando uma mensagem. O problema é que este evento esta tratando tando a perda quando o recebimento de focus. Poderiam me ajuda!
jtfFunDatNas.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
if (jtfFunDatNas.getText().trim().length() < 10){
JOptionPane.showMessageDialog(null,“Data inválida!”,
“Aviso”,JOptionPane.ERROR_MESSAGE);
jtfFunDatNas.requestFocus();
jtfFunDatNas.selectAll();
}
}
});
Obrigado,
Luiz
Pessoal, muito melhor que o focus lost é inserir um inputVerifier no seu JTextField.
Por exemplo, o InputVerifier abaixo garante que o usuário tem um valor numérico no JTextField:
inputText.setInputVerifier(new InputVerifier() {
public boolean verify(JComponent comp) {
boolean returnValue = true;
JTextField textField = (JTextField)comp;
String content = textField.getText();
if (content.length() != 0) {
try {
Integer.parseInt(textField.getText());
} catch (NumberFormatException e) {
returnValue = false;
}
}
return returnValue;
}
public boolean shouldYieldFocus(JComponent input) {
boolean valid = super.shouldYieldFocus(input);
if (!valid) {
getToolkit().beep();
}
return valid;
}
});
O método validate do inputVerifier, se retornar true, fará o JTextField avançar o foco. Caso contrário, o JTextField ficará parado, no mesmo componente. É mais limpo e você evita uma série de problemas relacionados a foco.
Para mais informações: http://java.sun.com/developer/JDCTechTips/2001/tt1120.html
Opa pessoal.
Estou tendo problemas com Eclipse + vep
na perda de foco do componente.
Alguém pode ajudar?
private SGCalendar getEdtDataPrevisaoPagamento()
{
if(edtDataPrevisaoPagamento == null)
{
edtDataPrevisaoPagamento = new SGCalendar();
edtDataPrevisaoPagamento.setBounds(new Rectangle(80, 76, 94, 20));
edtDataPrevisaoPagamento.addFocusListener(new java.awt.event.FocusAdapter()
{
public void focusGained(java.awt.event.FocusEvent e) {
System.out.println("focusGained()"); // TODO Auto-generated Event stub focusGained()
}
public void focusLost(java.awt.event.FocusEvent e)
{
try
{
simulacaoPagamentoAVistaController.verificaDataPagamentoInferior(edtDataPrevisaoPagamento.getDate());
}
catch (SimulacaoPagamentoAVistaDataInferior e1)
{
edtDataPrevisaoPagamento.grabFocus();
JOptionPane.showMessageDialog(null, e1.getMessage());
}
btnConsultar.setEnabled(true);
}
});
}
return edtDataPrevisaoPagamento;
}
Simplesmente não executa…
Opa valeu galera, fiz umas alterações na minha aplicação e agora as validações são em tempo real
e não na tentativa de cadastrar, ficou muito mais elegante.
Abraço galera