getText() está lançando exception!

3 respostas
P

Pessoal, tenho varios formulários em um projeto.
Acontece que em alguns casos, como salvar um cadastro, realizar uma conta, eu sempre tenho aluns campos automaticos, or exemplo:
Tenho 3 campos no formulário de preços:
campoPrecoAVista, campoPrecoAPrazo, campoPrecoCusto

o camoPrecoAPrazo é o ultimo campo a ser preenchido
coloquei um focuslost para o campoPrecoCusto,que pós ele perder o foco, deve calcular o valor do preço a vista e do preço a prazoe setar os campos: com um setText simples. Até ai beleza, daí quando clico pra salvar, o que acontece? eu dou um ((Number)nomDoCampo.getValue()).floatValue(); e ele lança uma exception de NullPointerException, ou seja, seta o valor da variável que estou lendo para 0.

Isso se eu clicar direto no botao salvar, mas se eu clicar nos campos e dar focus neles,antes de salvar, e depois clicar em salvar, salva perfeitamente! isso é uma m****! o usuário nao tem que ficar clicando pra habilitar o campo, como faço pra que ao clicar no botao salvar nao tenha esse comportamente? para campos formatados eu usei um commitEdit();axo q foi uma gambiarra. Mas e para campos de texto normal?

Tem alguns frmulários que usam o mesmo esquema para obter os conteúdos dos campose funciona normal.Mas isso que citei acima acontece muito, preciso evitar. Como faço?

3 Respostas

oliversistemas

se eu entendi… seu problema está na conversão do que é uma String (vinda do getText() ) em um valor do tipo float pra vc realizar cálculos.

. . . float numeroQueEuQuero = Float.parseFloat( nomeDoCampo.getText() ); . . .

caro colega… seu eu entendi errado seu problema, desconsidere esta solução.

Marky.Vasconcelos

Mudar disso:

float f = ((Number)nomDoCampo.getValue()).floatValue();

Para algo assim:

float f = Float.parseFloat(nomDoCampo.getText());

Deve resolver.

Pedrosa

Para compos moeda use BigDecimal e evite problemas com casas decimais.

Criado 13 de abril de 2009
Ultima resposta 14 de abr. de 2009
Respostas 3
Participantes 4