Estou fazendo a validação de campos aqui, quero permitir a entrada somente de caracteres ou somente de números… Fiz uma classe abstrata Validar e as outras extendem e implementam o método valida(). No método valida() eu uso Keylistener… Vi como se usa isso há pouco tempo e ainda tenho muitas dúvidas só que preciso entregar esse código pronto hoje.
Já que você está utilizando Swing, sempre que precisar de formatação de campos ou restrição de caracteres, utilize:
JFormattedTextField e MaskFormatted.
Boa Sorte.
KamillaaaH
Então não dá pra fazer com KeyListener? =S
thundercas
Dá para fazer sim, mas você terá que criar um método (ou classe) para validação dos caracteres…
Para limitar, você terá que criar uma variável (talvez estática) para guardar todos os caracteres digitados. Daí, em cima desta variável, você fará as validações… Mas o caminho mais fácil mesmo é o JFormattedTextField…
KamillaaaH
Tenho aqui um exemplo com JFormattedTextField…
packagevalidar;importjava.text.ParseException;importjavax.swing.JFormattedTextField;importjavax.swing.JFrame;importjavax.swing.JTextField;importjavax.swing.text.MaskFormatter;publicclassCampoFormatadoExemploextendsJFrame{JTextFieldtxt;publicCampoFormatadoExemplo(){super("Exemplo de Campo Formatado");setDefaultCloseOperation(EXIT_ON_CLOSE);setSize(200,100);setLayout(null);/*O JFormattedTextField é uma classe que herda de JTextField No construtor ele recebe um maskformatter, cujo construtor recebe uma string com a formatação, no caso, coloquei que só números podem entrar Importante que ele gera um exceção se não conseguir fazer parse da máscara para o campo de texto */try{txt=newJFormattedTextField(newMaskFormatter("###########"));}catch(ParseExceptione){System.out.println("Erro ao gerar máscara");}txt.setBounds(5,20,100,20);add(txt);}publicstaticvoidmain(String[]args){newCampoFormatadoExemplo().setVisible(true);}}
Muito mais entendível pra mim…
Só que… como modifico pra aceitar caracteres ou como eu verifico se o campo está em braco?
thundercas
Dê uma olhada na API do Java 6, não me recordo o nome dos métodos, mas é algo como “setValidCharacters()” e “length()”.
KamillaaaH
Ok, vou tentar implementar e qualquer coisa eu volto aqui. =D
Obrigada!
KamillaaaH
JFormattedTextField entendido… só tenho um problema… Como usar JOptionPane pra obter a entrada desses dados?
Tipo… telefone, data e talz?
Acho que minha pergunta não está bem formulada… É o seguinte, preciso colocar algo como "Insira o telefone: " ou "Insira a data: ". A partir daí, quando o usuário clicar no “Ok” quero que verifique se o campo está em branco…
é isso…
luiz_renato
Cara,
Nesse seu caso é melhor usar um JDialog modal c/ JFormattedTextField e JButton para mostrar a mensagem no lugar de um JOptionPane.