Caros amigos, é a primeira vez que eu faço uma pergunta e espero estar no lugar certo.
Primeiro quero parabenizar a todos do forum. Para mim este é o melhor do mundo.
Sempre que preciso venho buscar soluções aqui.
Minha dúvida é a seguinte: Consegui formatar um JFormattedTextfield para ficar tipo moeda e ir acrescentado os pontos automaticamente ao digitar. Ele funciona bem, mas da forma como coloquei o DecimalFormat ele não permite inserir os centavos. Não consegui resolver por nada. Por favor me ajudem. Segue o código abaixo…
DecimalFormat decimal = new DecimalFormat ("#,###,###.00");
NumberFormatter numFormatter = new NumberFormatter(decimal);
numFormatter.setFormat(decimal);
numFormatter.setAllowsInvalid(false); //impossibilita digitação diferente de números
final JFormattedTextField txtValorMerc = new JFormattedTextField();
txtValorMerc.setFormatterFactory(new DefaultFormatterFactory(numFormatter));
txtValorMerc.setBounds(125,140,110,20);
txtValorMerc.setFont(new Font("Times New Roman",Font.BOLD,14));
this.add(txtValorMerc); // adicionando no JInternalframe...
Do jeito que está o código funciona perfeitamente, porém não consigo adicionar os centavos, pois o “00” é fixo.
E também não funciona se colocar tudo com “#”, já tentei também…
Valeu ajFilho, já tinha feito isto e realmente funciona, mas eu queria mesmo era já poder digitar o valor na mesma formatação do restante do JTEXTFIELD. Mas mesmo assim valeu por tentar ajudar. Por acaso alguém sabe por que é que quando se muda o “,00” para ## não funciona mais???
Obrigado pela atenção Leandro. É por isso que eu sempre digo que esse é o melhor forum do mundo. A galera sempre tenta ajudar… Vou tentar implementar e depois eu digo o que e consegui… valeu…
Já vi vários outros posts como esse aqui pelo Guj, mas nunca encontrei um interface que se comportasse como eu queria para valores de moeda. Então decidi fazer um TextField que se comportasse de forma parecida ao funcionamento de caixas eletrônicos. Segue o código:
[code]/*Classe desenvolvida por Renzo Nuccitelli
para fazer validação de valores monetários
em Real
*/
public class TextFieldMoedaReal extends JTextField implements KeyListener {
private StringBuilder lastValidNumber;
/**
Aceita um BigDecimal com escala 2.
Outras escalas não são serão aceitas
@param BigDecimal
*/
public void setNumber(BigDecimal decimal){
System.out.println("escala: "+decimal.scale());
if(decimal.scale()==2){
lastValidNumber=new StringBuilder(decimal.unscaledValue().toString());
super.setText(getRealFormat());
}
}
/**Retorna um BigDecimal com o valor encontrando no campo
[quote=renzonuccitelli]Já vi vários outros posts como esse aqui pelo Guj, mas nunca encontrei um interface que se comportasse como eu queria para valores de moeda. Então decidi fazer um TextField que se comportasse de forma parecida ao funcionamento de caixas eletrônicos. Segue o código:
[code]/*Classe desenvolvida por Renzo Nuccitelli
para fazer validação de valores monetários
em Real
*/
public class TextFieldMoedaReal extends JTextField implements KeyListener {
private StringBuilder lastValidNumber;
/**
Aceita um BigDecimal com escala 2.
Outras escalas não são serão aceitas
@param BigDecimal
*/
public void setNumber(BigDecimal decimal){
System.out.println("escala: "+decimal.scale());
if(decimal.scale()==2){
lastValidNumber=new StringBuilder(decimal.unscaledValue().toString());
super.setText(getRealFormat());
}
}
/**Retorna um BigDecimal com o valor encontrando no campo
Olá pessoal, desculpa a ignorância , mas como eu adiciono esse código ( classe ) no meu código, pois, já tenho o formulário pronto mas não sei como usar esse exemplo passado aqui no meu código, agradeço desde já. :lol:
Você não sabe o quanto me ajudou! O que eu estava procurando era exatamente uma máscara igual ao dos caixas eletrônicos e como ainda não tenho “cacife” para isso…
enantiomero, naquela ocasião não consegui usar essa classe no meu código, não consegui mudar o que você mandou, pois, aqui no netbeans não consegui achar esse código que você postou aqui:
[quote]Por exemplo, se no seu código você tem um JTextField declarado assim: