Formatação de valores monetarios

galera tenho um JFormattedTextField que recebera valores monetarios (R$)
gostaria que na medida que o usuario fosse digitando o valor este numero ja fosse formatado ! ex:

1234 igual a 12,34
1000 igual a 1000,00

obrigado !
Josimar

   1. /* 
   2.  * Moeda.java 
   3.  * 
   4.  * Created on 24 de Fevereiro de 2005, 21:09 
   5.  */  
   6.   
   7. import java.text.DecimalFormat;  
   8. import java.text.DecimalFormatSymbols;  
   9. import java.util.Locale;  
  10.   
  11. /** 
  12.  * Classe que padroniza a internacionalizacao de valores monetarios 
  13.  * @author Luiz Cavalcanti 
  14.  * @version 0.1 
  15.  * @see java.util.Locale 
  16.  * @see java.text.DecimalFormat 
  17.  * @see java.text.DecimalFormatSymbols 
  18.  */  
  19. public final class Moeda {  
  20.       
  21.     /** 
  22.      * Simbolos especificos do Dolar Americano 
  23.      */  
  24.     private static final DecimalFormatSymbols DOLAR = new DecimalFormatSymbols(Locale.US);  
  25.     /** 
  26.      * Mascara de dinheiro para Dolar Americano 
  27.      */  
  28.     public static final DecimalFormat DINHEIRO_DOLAR = new DecimalFormat("¤ ###,###,##0.00",DOLAR);  
  29.     /** 
  30.      * Simbolos especificos do Euro 
  31.      */  
  32.     private static final DecimalFormatSymbols EURO = new DecimalFormatSymbols(Locale.GERMANY);  
  33.     /** 
  34.      * Mascara de dinheiro para Euro 
  35.      */  
  36.     public static final DecimalFormat DINHEIRO_EURO = new DecimalFormat("¤ ###,###,##0.00",EURO);  
  37.     /** 
  38.      * Locale Brasileiro 
  39.      */  
  40.     private static final Locale BRAZIL = new Locale("pt","BR");  
  41.     /** 
  42.      * S�mbolos especificos do Real Brasileiro 
  43.      */  
  44.     private static final DecimalFormatSymbols REAL = new DecimalFormatSymbols(BRAZIL);  
  45.     /** 
  46.      * Mascara de dinheiro para Real Brasileiro 
  47.      */  
  48.     public static final DecimalFormat DINHEIRO_REAL = new DecimalFormat("¤ ###,###,##0.00",REAL);  
  49.       
  50.     /** 
  51.      * Mascara texto com formatacao monetaria 
  52.      * @param valor Valor a ser mascarado 
  53.      * @param moeda Padrao monetario a ser usado 
  54.      * @return Valor mascarado de acordo com o padrao especificado 
  55.      */  
  56.     public static String mascaraDinheiro(double valor, DecimalFormat moeda){  
  57.         return moeda.format(valor);  
  58.     }  
  59. }  

junior para que serve o simbolo "¤"
Valeu !

Licuri serve o simbolo “¤” serve para exibir o Label monetário, no caso do Brasil exibe o R$.
Espero ter ajudado.

[quote=Licuri]junior para que serve o simbolo "¤"
Valeu ![/quote]

Licuri serve o simbolo “¤” serve para exibir o Label monetário, no caso do Brasil exibe o R$.
Espero ter ajudado.

Licuri Isso que colega falou ai em cima ! é o teu caso ne ?

josimarsis Mostra tua classe ai tua Entidade !

Oi,

De uma olhada no componente JMoneyField feito pelo usuário dyorgio.

Poderá lhe ajudar e muito.

http://www.guj.com.br/posts/list/97891.java

Tchauzin!

lina Bom dia Valeu !

UP, Obrigado.

Muito bom pessoal, me ajudou muito, no meu caso estou usando no android. Funcionou perfeitamente.

Desde ja grato.

Marcos Angelo
Android Developer.

Cara,
recentemente eu fiz uma “gambiarra”, mas tah funcionando. Ele usa um jtextfield mesmo.
1- Adicione o evento keyreleased ao jtextfield;
private void jTextField1KeyReleased(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
char tecla = evt.getKeyChar();
if(tecla == KeyEvent.VK_ENTER){
this.jTextField3.requestFocus();
}else{
formatJTextNumber(this.jTextField2);
}
public static void formatJTextNumber(javax.swing.JTextField jtextfield){
String regex = “[0-9]”;
String valorAtual = jtextfield.getText();
String CaracterDigitado = “0”;
try {
CaracterDigitado = jtextfield.getText().substring(jtextfield.getText().length() - 1, jtextfield.getText().length() - 0);
} catch (java.lang.StringIndexOutOfBoundsException e) {
CaracterDigitado = jtextfield.getText().substring(jtextfield.getText().length() - 0, jtextfield.getText().length() - 0);
}

    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(CaracterDigitado);
    boolean b = m.matches();
    if(b == false){
        try {
            valorAtual = jtextfield.getText().substring(0, jtextfield.getText().length() - 1);
        } catch (java.lang.StringIndexOutOfBoundsException e) {
            valorAtual = jtextfield.getText().substring(0, jtextfield.getText().length() - 0);
        }
    }
    String valorAtualReplaced = valorAtual.replace(",", "");
    
    //separe os doois ultimos digitos
    String centavos = "";
    try {
        centavos = valorAtualReplaced.substring(valorAtualReplaced.length() - 1, valorAtualReplaced.length()-0);
    } catch (java.lang.StringIndexOutOfBoundsException e) {
    }
    String decimal = "";
    try {
        decimal = valorAtualReplaced.substring(valorAtualReplaced.length() - 2, valorAtualReplaced.length() - 1);
    } catch (java.lang.StringIndexOutOfBoundsException e) {
    }
    //a parte restante é a parte inteira
    String inteira = "";
    try {
        inteira = valorAtualReplaced.substring(0, valorAtualReplaced.length() - 2);
    } catch (java.lang.StringIndexOutOfBoundsException e) {
        inteira = "0";
    }
    //reconfigure os jtext
    String separator = ",";
    String valorSaida = "";
    
    //configura a parte inteira
    if(inteira.equals("") == true){
        inteira = "0";
    }
    int length = inteira.length();
    String subInteira = inteira.substring(0,1);
    if(length == 2 && subInteira.equals("0") == true){
        inteira = inteira.substring(1);
    }
    //configura o valor de saída
    valorSaida = inteira + separator + decimal + centavos;
    jtextfield.setText(valorSaida);
    
}

Tenta aí, valeu!