Receber float de Textfield

7 respostas
O

Boas pessoal :smiley: , tenho uma dúvida bem básica;

tenho a minha classe Categoria

com o metodo setPreco que é do tipo float e quero receber um valor de uma textfield mas nao estou a conseguir, quando é inteiro eu faço do genero

cat.setPreco(new Integer(jTextField2.getText()));

quero fazer igual mas para receber um float;

Muito obrigado a todos.

7 Respostas

T

Se o conteúdo do seu textfield for “2.345,67”, então você quer receber o valor 2345.67 dentro de seu preço, não?

Faça o seguinte:

import java.util.*;
import java.text.*;
...
Locale pt = new Locale ("pt", "PT"); // use "pt", "BR" se no Brasil, "pt", "PT" se em Portugal, etc.
NumberFormat nf = NumberFormat.getInstance (pt);
....
try {
    cat.setPreco (nf.parse (jTextField2.getText()));
} catch (ParseException ex) {
    // tratar aqui o erro de formatação
}
O

Hey mas para usar dessa forma tenho de criar um metodo do tipo number?
é que está dando erro.

não há forma mais simples como se usa para os integer ?

T

Ah, desculpe (é que não testei.) O certo é:

import java.util.*;
import java.text.*;
...
Locale pt = new Locale ("pt", "PT"); // use "pt", "BR" se no Brasil, "pt", "PT" se em Portugal, etc.
NumberFormat nf = NumberFormat.getInstance (pt);
....
try {
    cat.setPreco (nf.parse (jTextField2.getText()).doubleValue()); // ou floatValue se o tipo do parâmetro for float, não double
} catch (ParseException ex) {
    // tratar aqui o erro de formatação
}

Não se esqueça: nunca use float para mexer com preços. Prefira usar double devido aos problemas de precisão.

O

muito obrigado thingol :wink:

ddmizu

others:
Hey mas para usar dessa forma tenho de criar um metodo do tipo number?
é que está dando erro.

não há forma mais simples como se usa para os integer ?


Deve estar dando erro pq vc nao fez os imports q o cara colcou. Vc viu lá?

import java.util.*; import java.text.*;
Outra coisa, o cara te mostrou como fazer do jeito profissional! Pra vc mostrar pro seu professor e ele falar: ‘Muito bom’. Mas se vc quiser fazer de um jeito que ele olhe e simplesmente diga ‘ok, funcionou’, faça assim:

Float.parseFloat(jTextField2.getText());

**Só lembrando q se vc for usar isso pra mexer com preço, então deve utilzar Double ao inves de float. Use! Acredite, vai te economizar mto tempo com futuros problemas ;). No caso de utilizar double, fica assim o código:

Double.parseDouble(jTextField2.getText());
O

ddmizu por acaso dessa forma ja tinha tentado mas nao era isso que queria para o meu problema,
e não na é para mostrar a nenhum professor, por acaso era uma duvida simples mas como nunca tinha
precisado de utilizar nos meus programas nao sabia, mas obrigado na msm :slight_smile:

ddmizu

;]

Falou, campeão!
Bom trabalho, então!

Criado 14 de dezembro de 2007
Ultima resposta 14 de dez. de 2007
Respostas 7
Participantes 3