[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.