Validação de nome em jTextField

8 respostas
claudneto
private void nome_capitaoFocusLost(java.awt.event.FocusEvent evt) {                                       

        if (verificaNome(nome_capitao.getText())) {
            tabela_cadastro.setValueAt(1, 0, 0);
            tabela_cadastro.setValueAt(nome_capitao.getText(), 0, 1);
        }
        else {
            JOptionPane.showMessageDialog(null, "Nome inválido!", "Erro", JOptionPane.ERROR_MESSAGE);
            nome_capitao.grabFocus();
        }
    }

Esse método está sendo executado 3x. Aparece a mensagem de erro 3x! Não sei pq!

8 Respostas

D

coloca a funçao verificaNome pra ver oq ela faz ai…

RenanRosa
claudneto:
private void nome_capitaoFocusLost(java.awt.event.FocusEvent evt) {                                       

        if (verificaNome(nome_capitao.getText())) {
            tabela_cadastro.setValueAt(1, 0, 0);
            tabela_cadastro.setValueAt(nome_capitao.getText(), 0, 1);
        }
        else {
            JOptionPane.showMessageDialog(null, "Nome inválido!", "Erro", JOptionPane.ERROR_MESSAGE);
            nome_capitao.grabFocus();
        }
    }

Esse método está sendo executado 3x. Aparece a mensagem de erro 3x! Não sei pq!

pode postar mais código ?
precisamos ver como está chamando e onde

claudneto

Ah é!

Desculpa…

private boolean verificaNome (String s) {

        boolean verifica = true;

        if (s.length() == 0) return false;

        for (int i = 0; i < s.length(); i++) {
            if (!(s.toLowerCase().charAt(i) >= 97 && s.toLowerCase().charAt(i) <= 122 ||
                    s.charAt(i) == ' ')) {
                verifica = false;
            }
        }

        return verifica;
    }
RenanRosa
claudneto:
Ah é!

Desculpa...

private boolean verificaNome (String s) {

        boolean verifica = true;

        if (s.length() == 0) return false;

        for (int i = 0; i < s.length(); i++) {
            if (!(s.toLowerCase().charAt(i) >= 97 && s.toLowerCase().charAt(i) <= 122 ||
                    s.charAt(i) == ' ')) {
                verifica = false;
            }
        }

        return verifica;
    }

como está chamando o metodo nome_capitaoFocusLost ?

por que comparou se s.toLowerCase().charAt(i) é maior ou igual a 97 ? sendo que charAt(i) retorna um caracter de 1 posição ?

D

me parece que um parenteses esta posicionado no lugar errado, muda o if para isso aqui e testa:

if (!(s.toLowerCase().charAt(i) >= 97 && s.toLowerCase().charAt(i) <= 122) || s.charAt(i) == ' ') { verifica = false; }

claudneto

RenanRosa é pra verificar se é uma letra. As letras ficam entre 97 e 122 na tabela ASC II e os códigos de a e Z são 97 e 122, respectivamente.

diego_scunha dessa forma, da erro. Precisa dos dois parênteses no final pq eu abri parênteses logo após o !

Mas o erro não está nesse método. Eu chamo ele em outro botão e ele funciona normalmente. Sem erro algum.

D

Mas com os dois parenteses no final vc ta verificando se o s.charAt(i) != ’ ’
E acredito eu que vc quer verificar se s.charAt(i) == ’ ’

De uma revisada nessa logica provavelmente o erro esta nela.

claudneto

O Netbeans mostra onde abre o parênteses que eu estou fechando e está correto.

O problema não é nesse método. O problema é no focusLost.

Criado 29 de abril de 2011
Ultima resposta 29 de abr. de 2011
Respostas 8
Participantes 3