Validação de nome em jTextField

[code]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();
    }
}[/code]

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

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

[quote=claudneto][code]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();
    }
}[/code]

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

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

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

[quote=claudneto]Ah é!

Desculpa…

[code]
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;
}

[/code][/quote]

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 ?

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

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.

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.

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.