Problemas com JFormatedTextField

9 respostas
P

Ola pessoal, sou novato aqui no forum e gostaria se possivel da ajuda de voces…
Criei um JFormatedTextField e apliquei uma mascara para aceitar somente numeros.
O problema acontece quando tento converter o valor do campo para int. (Esse campo sera utilizado para receber um numero de telefone). Quando tento usar o “Integer.parseInt” recebo uma exceção do tipo “NumberFormatException”. Segue abaixo os pedaços do meu código para vcs avaliarem…
Obrigado desde já.

private MaskFormatter setMascara(String mascara){   
                                MaskFormatter mask = null;   
		try{   
			mask = new MaskFormatter(mascara);
		}catch(java.text.ParseException ex){}   
		return mask;   
}
private JFormattedTextField getCentralNumberTextField() {
        if (centralNumberTextField == null) {
              centralNumberTextField = new JFormattedTextField(setMascara("#############"));
        }
String enteredNumber = (String)centralNumberTextField.getText();
int centralNumber = Integer.parseInt(enteredNumber);
database.setCentralNumber(centralNumber);

9 Respostas

T

cara, estava em outro site java e sem querer tinha a chamada sobre JFormatedTextField, não testei, se possivel vc der uma olhada!

http://www.javafree.org/javabb/viewtopic.jbb?t=863862

Abraços!

P

Obrigado pela dica truck1n, inclusive aproveitei para melhorar meu formattedtextfield, uma vez que tinha utilizado uma rotina totalmente complexa a fim de evitar outros caracteres indesejados no campo. Achei que o “setValidCharacters” do maskformatter não eliminasse na digitação…

No entanto, rodei o exemplo do link e tentei fazer a conversão para int do valor contido no campo e ainda não obtive sucesso…

Minha intenção é guardar esse numero de telefone recebido em um banco de dados. Seria indicado trabalhar com ele no formato “string” caso eu não consiga fazer essa conversão??

Obrigado e []´s!

diego2005

Cara, já vi alguns post aqui desencorajando o uso do JFormattedTextField. Por exemplo, sua máscara é a seguinte: “#############”

Então se você não colocar um número parecido com: 9999999999999, vai dar erro.

Porque se vc colocar: 132

quando o JFormattedTextField perde o foco ele limpa os número, ele só mantem se a quantidade de caracteres for igual ao tamanho da sua máscara.

T+

P

Realmente Diego, observei esse fato quando estava testando o código, mas no meu caso, sou obrigado a preencher esse campo corretamente…
Mesmo assim obrigado…

[]´s!

diego2005

E mesmo preenchendo corretamente continua dando erro??

T+

Marky.Vasconcelos

acho que pra aceitar numeros desse tamanho você precisa de usar numeros do tipo long que tem o heap maior

P

Até como long continuo tendo a mesma exceção…
Não sei mais o que fazer…hehe

Qualquer sugestão é bem vinda pessoal, preciso muito validar esse campo…

Obrigado e []´s!

Marky.Vasconcelos

Ele tem só numeros?

oque você faz pra pegar a String?

Long.parseLong(jtField.getText());

?

P

Caramba Mark, nem conto o que fiz no ultimo teste com a sua sugestão de passar para long ao invés de usar int…
Troquei o tipo da variável para long só que esqueci de trocar o código que lia a string, ou seja:

Integer.parseInt(jtField.getText());

só podia dar zica mesmo… hehe

Agora sim kra, refazendo com o parseLong deu certo, e finalmente consegui pegar o conteúdo do campo…

Vlw mesmo pela dica!!! Estou a um bom tempo amarrado nisso…
Obrigado e []´s!!

Criado 21 de agosto de 2007
Ultima resposta 21 de ago. de 2007
Respostas 9
Participantes 4