Focus no JTextField

7 respostas
diogoprosoft

Galera estou validando aqui no sistema para que o campo só aceite número, então criei o sequinte método:

private void SomenteNumeros(java.awt.event.FocusEvent evt) {
    long valor;
    if (idPessoa.getText().length() != 0){
        try {
        valor = Long.parseLong(idPessoa.getText());
        }catch(NumberFormatException ex){
        JOptionPane.showMessageDialog(null, "Esse Campo só aceita números" ,"Informação",JOptionPane.INFORMATION_MESSAGE);
        idPessoa.grabFocus();
        }
    }
    }

Mais quando mostra a mensagem ele entre em loop 4 vezes!!! Tenho clicar 4vezes na mensagem para poder voltar para o campo e alterar a letra para número. O que estou fazendo de errado?

7 Respostas

vitinho1712

Quando vc chama esse métoda ?

diogoprosoft

no FocusLost.

vitinho1712

Isso pode estar acontecendo pq talvez no campo que ganha o focu quando ess textfield perde o focu, tenha algo no FocusLost também, vê se é isso.

eliangela

Pra ficar mais fácil, porque vc não tenta usar no lugar do JTextField um JFormattedTextField.
Daí vc adiciona um código assim:

try { mask = new MaskFormatter(######); //esse caracter '#' significa que só aceita números mask.install(seuJFormattedTextField); } catch (ParseException ex) { // }

diogoprosoft

pensei nisso mais ai se eu colocar ##### nao sou obrigado a preencher todo esse espaço?

eliangela

diogo soares:
pensei nisso mais ai se eu colocar ##### nao sou obrigado a preencher todo esse espaço?

Não tem necessidade. O único problema é que ele retorna o número que vc digitou e os números faltantes serão espaços.
Se vc quiser somente os números pode fazer

int i = Integer.parseInt(seuJFormattedTextField.getText().trim());
diogoprosoft

Boa vou fazer isso, obrigadao pela dica.

Criado 12 de junho de 2009
Ultima resposta 12 de jun. de 2009
Respostas 7
Participantes 3