Estou fazendo programa desktop Java, e estou utilizando campos com mascara. Preciso fazer um campo de moeda. Igual aos caixas eletrônicos quando vamos sacar dinheiro, onde os valores são preenchidos da direita para esquerda.
Exemplo:
,5
,50
5,00
50,00
Pesquisei nos fóruns e consegui fazer uma parte, mas ainda tem um probleminha.
Criei uma mascara “######,##” e não funciona, pois ele começa a preencher da esquerda para a direita porem empurra a virgula !!!
Vocês podem me ajudar com essa duvida ??
Segue abaixo o codigo ate o momento:
public MaskFormatter Mascara(String Mascara){
MaskFormatter F_Mascara = new MaskFormatter();
try{
F_Mascara.setMask(Mascara); //Atribui a mascara
F_Mascara.setPlaceholderCharacter(' '); //Caracter para preencimento
}
catch (Exception excecao) {
excecao.printStackTrace();
}
return F_Mascara;
}
jFormattedTextField1 = new javax.swing.JFormattedTextField(Mascara("######,##"));
jFormattedTextField1.setComponentOrientation(java.awt.ComponentOrientation.RIGHT_TO_LEFT);
Uma idéia seria vc implementar uma classe PlainDocument, inserindo sempre no final e formatando com DecimalFormat.
Algo +/- assim:
public class MyDocument extends PlainDocument
{
private double value;
public void insertString(int offset, String str, AttributeSet attr)
throws BadLocationException {
if (s == null) return;
//formata o nr. com DecimalFormat ...
...
//insere sempre no final
super.insert(this.getLength()-1, str, attr);
...
}
}