Somar campoformatado

5 respostas
P

Preciso colocar uma mascara de entrada em fields com formato moeda usei

// formatando formato moeda

java.text.DecimalFormat decimal = new java.text.DecimalFormat("#,###,###.00");

javax.swing.text.NumberFormatter numFormatter = new javax.swing.text.NumberFormatter(decimal);

numFormatter.setFormat(decimal);

numFormatter.setAllowsInvalid(false);

jft_margemlucro.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(numFormatter));

jft_margemlucro.setHorizontalAlignment(javax.swing.JTextField.TRAILING);

apesar de não colocar o R$ deu certo mas preciso fazer a soma de dois campos e setar o resultado em um 3 campo
campovalorp + campovalorS = campovalortotal

como faço uma vez que com a mascara os campos passaram a usar , em vez de . para separar as casas decimais

5 Respostas

Eder_Peixoto

Olá Paula!

Você está confundindo dados brutos daqueles formatados.

Quando você formata um valor, normalmente esse servirá apenas para ser apresentado ao cliente. A manipulação desses deve ser realizada através dos dados brutos, sendo que no teu caso, deve ser através de um double, float ou BigDecimal.

P

Eder Peixoto:
Olá Paula!

Você está confundindo dados brutos daqueles formatados.

Quando você formata um valor, normalmente esse servirá apenas para ser apresentado ao cliente. A manipulação desses deve ser realizada através dos dados brutos, sendo que no teu caso, deve ser através de um double, float ou BigDecimal.

P

eu entendi que quando eu formato o campo ele apresenta um visualização do que eu digitei mas como faço para converter o que eu digitei nesse campo e transforma-lo em double para realizar uma soma
desculpa acho que não sei bem explicar

mas se puderem me ajudar fico grata desde já

A
Boa noite. não sei si entendi bem seu problema, mas acho que vc quer realizar uma soma com os valores contidos em um Testfield formatado né??? pois é, tenho um método aqui ki eu acho que vai te ajudar, por que ele retira as mascaras dos campos formatados, ficando apenas os valores.... sendo assim após usar o método basta vc apenas fazer o calculo que deseja, vou postar o método de dar um exemplo de como seria essa sua solução, caso eu tenha entendi corretamente. MÉTODO QUE RETIRA A MASCARA
private  String removeNaoNumericos(String entrada){
           // Padrão que caracteriza caracteres numéricos
           Pattern numericos = Pattern.compile("([0-9])");

           // Colocando o texto no padrão para ver o que encaixa
           Matcher encaixe = numericos.matcher(entrada);

           // Criando um buffer de saída, que é uma solução
           // mais otimizada do que ir concatenando uma String
          StringBuffer saida = new StringBuffer();

          // A cada número encontrado
          while(encaixe.find())
             // Adiciona-se esse número ao buffer
           saida.append(encaixe.group());

          // Devolvendo o buffer convertido em String
          return saida.toString();
       }
EXEMPLO DE CHAMADA DO MÉTODO
String valor  = removeNaoNumericos(seutextFieldFormatado.getText()); // Nessa parte vc passa o valor do seu TextField Formatado
double num = Double.ParseDouble(valor);// Converte o valor "String" para Double
..............// agora vc realiza sua soma ou qualquer outro processo aritimético.
Eder_Peixoto

Todo formatador possui um parser, o qual converte a string apresentada em um objeto (no caso de números, retorna uma instância de Number). Para invocá-lo:

this.jFormattedTextField.getFormatter().stringToValue( this.jFormattedTextField.getText() );
Criado 27 de outubro de 2010
Ultima resposta 28 de out. de 2010
Respostas 5
Participantes 3