Validador de inteiros com JOptionPane

10 respostas
F

Olá.

Tenho um método construtor que recebe como parâmetro um nome(String) e um codigo_id (inteiro).
Ele recebe os dados de uma JOptionPane.
Se no codigo_id é digitado alguma letra dá um erro de exceção.
Preciso de alguma forma permitir que seja digitado apenas números, caso contrário deve ser exibida uma mensagem informando que o usuário precisa digitar apenas números.
O que devo fazer ?
Acredito que devo usar um Try-Catch. Mas aonde ? E como devo verificar se é inteiro ?

Obrigado

10 Respostas

R

Para você ter mais controle sobre a forma como os dados são digitados, acho que vale a pena você criar seu próprio formulário para que o usuário digite os campos, em vez de confiar essa tarefa a JOptionPane. Segue uma sugestão sobre como fazer o campo de entrada numérico:
http://stackoverflow.com/a/6111095

F

Pois é… se eu pudesse escolher usaria uma JTextField ou algum outro que fosse mais fácil de ser manipulado. Mas tenho que usar uma JOptionPane. Então preciso de uma solução para a JOptionPane.

ViniGodoy

E por que você tem que usar o JOptionPane? O que te impede de criar um JDialog?

argentinaluiz

Olá você pode utilizar um modelo chamado Document para validar o que está sendo digitado,
assim só será permitido digitar números ao inves de letras.

crie um JTextField e crie um Document e adicione-o no campo de texto.

http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/text/Document.html

flw

F

É para um trabalho da facul… um dos requisitos é que seja usado JOptionPane.

argentinaluiz

Então felipe já que tem que ser com o JOptionPane mesmo,

coloca o JTextField dentro dele e usa o Document para permitir só a digitação de números.

F

Não consegui pensa em nada melhor no momento hehhee, mas…

boolean errado = true;
        do {
            try {
                String numero = JOptionPane.showInputDialog(null, "Entre com um numero", "Entrada", JOptionPane.INFORMATION_MESSAGE);
                int num = Integer.parseInt(numero);
                errado = false;
            } catch (NumberFormatException ex) {
                System.out.println("Somente numeros"); // Ou qualquer outro tipo de mensagem, quem sabe com JOptionPane mesmo....
            }
        } while (errado);
argentinaluiz

é uma outra solução! Boa!

F

Tentei desta última forma, mas o problema é que tenho um método construtor que recebe uma string, string(telefone) e outra string.
A mensagem dizendo que é apenas números aparece depois que tudo é digitado. O correto seria aparecer na hora que ele digita alguma letra no campo do telefone.

O que posso fazer ?

vitordaumling

com um jTextField voce poderia fazer o TRY-CATCH dentro de um evento do jTextFeld chamado keyReleased. Agora, utilizando jOptionPane eu desconheço uma forma de se validar no momento da digitação

Criado 21 de junho de 2012
Ultima resposta 24 de jun. de 2012
Respostas 10
Participantes 6