Olá…
Tenho em um JForm que tem alguns campos, tipo nome, endereço…
Como fazer para esses JTextField receber só caracteres e se o usuiário digitrar números, ele da uma mensagem!!??
Valeu a ajuda.
Olá…
Tenho em um JForm que tem alguns campos, tipo nome, endereço…
Como fazer para esses JTextField receber só caracteres e se o usuiário digitrar números, ele da uma mensagem!!??
Valeu a ajuda.
Olá…Tenho em um JForm que tem alguns campos, tipo nome, endereço…
Como fazer para esses JTextField receber só caracteres e se o usuiário digitrar números, ele da uma mensagem!!??
Valeu a ajuda.
Bom, o codigo nao sei dizer agora, mas uma logica seria vc usar o evento do JTextField correspondente a ação de apertar uma tecla, logo em seguida, vc tenta converter o que foi digitado em inteiro usando um bloco try catch. Se a conversão der erro(o cara nao digitou numeros) os comandos dentro do catch são acionados. Ou seja, dentro do catch estaria o codigo para fazer aparecer uma janela de erro.
Bsatrianin, veja, você deve tratar o evento relacionado ao seu JTextField. No livro em que estudei, aliás, estudo ainda, tem um bom exemplo desse tratamento. Você deve implementar um método para tratar a string digitada pelomusuário, nesse caso seria um keyPressed.
Vou colocar aqui uma parte do código que está no livro. Suponha que seu JTextField seja nomeado com T1. O método ficaria da seguinte forma:
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()<96 || e.getKeyCode()>105) // Não é teclado numérico
{
e.setKeyCode(e.VK_ESCAPE); // Cancela a tecla pressionada
return;
}
}
Nesse if é verificado, por meio do código ASCII se a tecla não é caracter numérico, se não for, ele cancela a tecla por do VK_SCAPE.
Agora tente usar esse exemplo para implemntar seu código.
Espero ter ajudado, pois já pedi muita ajuda aqui e sempre fui muito bem correspondido.
Para ter um conhecimento melhor, estude os controles de eventos.
Como diria o MakiavelBona,
Até !
Valder, seu algoritmo não funciona caso o usuário dê CTRL+C e CTRL+V.
Para previnir a digitação, a melhor maneira é alterar o Document relacionado ao JTextField.
Esse artigo do GUJ exemplifica como fazer isso:
http://www.guj.com.br/java.tutorial.artigo.29.1.guj
Ele mostra como editar um document para definir um tamanho máximo no JTextField.
No caso de impedir a entrada de números o princípio é o mesmo.
Se você quiser fazer a verificação após a digitação, antes dele trocar de JTextField, pode usar um InputVerifier:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/InputVerifier.html
É melhor também do que usar o mecanismo de eventos.
Por fim, sempre há a possibilidade de verificar o conteúdo no botão de salvar. Essa técnica, apesar de parecer antiga, é interessante também pq permite que o usuário digite toda a entrada sem se preocupar em olhar para a tela. Já que nenhum erro irá interrompe-lo no meio do caminho.
ViniGodoy, legal, obrigadão, bons tutoriais ! vou estudá-los, pois acredito que esses tratamentos sejam de suma importância.
Mas, uma pergunta, por que o usuário daria Ctrl + C ou Ctrl + V nesse caso ?
Ops, está faltando uma linha no código que postei, o correto ficaria assim:
public void keyPressed(KeyEvent e)
{
if (e.getSource() == T1)
{
if(e.getKeyCode()<96 || e.getKeyCode()>105) // Não é teclado numérico
{
e.setKeyCode(e.VK_ESCAPE); // Cancela a tecla pressionada
return;
}
}
}
Só uma coisa… o T1 do cód. é referencia a que?
T1, como eu disse, é o nome de seu elemento JTextField, declare-o da seguinte forma
T1 = new JtextField();
Depois de feito isso você deve adicioná-lo ao método KeyListener da seguinte forma:
T1.addKeyListener(this);
Espero ter ajudado.
ViniGodoy, legal, obrigadão, bons tutoriais ! vou estudá-los, pois acredito que esses tratamentos sejam de suma importância.
Mas, uma pergunta, por que o usuário daria Ctrl + C ou Ctrl + V nesse caso ?
Se ele estiver copiando os dados de algum outro lugar, ele pode dar ctrl+c nesse outro lugar, e ctrl+v na sua tela de cadastro.
E aí, o campo aceitará qualquer coisa.
Um exemplo: Seu campo de “Renavam” só aceita números. O cara vai cadastrar um carro, e já tem aberta a página do Detran. Ele copia de lá o Renavam (que também tem traços e pontos) e cola no seu cadastro. O seu cadastro aceitará os pontos e as letras, já que o CTRL+V não dispara o evento KeyPressed. E voilá, vc tem uma inconsistência nos dados. Com o document, isso não tem como acontecer. 
Ótima explicação, Vinni. Bem, então o bom mesmo é estudar o Document.
Obrigadão pela dica.
Bem, estou usando o Netbeans e so implementar o comando keyPressed e no lugar de T1, o nome do campo que tem o nome do JTextField.
public void keyPressed(KeyEvent e)
{
if (e.getSource() == T1)
{
if(e.getKeyCode()<96 || e.getKeyCode()>105) // Não é teclado numérico
{
e.setKeyCode(e.VK_ESCAPE); // Cancela a tecla pressionada
return;
}
}
}
Para delimitar o tamanho do campo é so por os valores no < maior e menor dentro do if por exemplo 0 a 100 que seria o tamanho de um campo nome por exemplo?
Para delimitar o tamanho do campo é so por os valores no < maior e menor dentro do if por exemplo 0 a 100 que seria o tamanho de um campo nome por exemplo?
Incrível! Como expliquei a 1 ano atrás, esse evento não serve justamente por causa do CTRL+C e CTRL+V. O correto mesmo é implementar um Document, como ensinado no tutorial Controlando um JTextField, aqui do GUJ.