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
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!